Ssl
在埠 5222 上設置 ejabberd STARTTLS
我剛剛
ejabberd/ecs
在 ubuntu 20.04 aws 實例上安裝並設置了 docker 映像。我有埠、域名和使用者設置和工作。
在主機(ubuntu)上,我使用 certbot 生成了 Let’s Encrypt 證書,將它們複製到 docker 容器中:
certfiles: - /home/ejabberd/conf/fullchain.pem - /home/ejabberd/conf/privkey.pem ca_file: "/home/ejabberd/conf/fullchain.pem"
我想要求我的使用者只使用安全連接。
我在文件上讀到我最好使用 STARTTLS 而不是 TLS。
問題是 ejabberd 似乎僅在設置 TLS 時才使用我的證書。
當我這樣設置配置時:
listen: - port: 5222 ip: "::" module: ejabberd_c2s max_stanza_size: 262144 shaper: c2s_shaper access: c2s tls: true ... - port: 5280 ip: "::" module: ejabberd_http tls: true request_handlers: "/admin": ejabberd_web_admin
並重新載入配置
bin/ejabbedctl reload_config
,然後我可以https://example.com:5280/admin/
使用 ssl 訪問。當我使用
openssl
另一台機器測試證書時,它似乎可以工作,因為我得到以下資訊:openssl s_client -connect example.com:5222 CONNECTED(00000005) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = example.com verify return:1 --- Certificate chain 0 s:CN = example.com i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 1 s:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 i:O = Digital Signature Trust Co., CN = DST Root CA X3 --- Server certificate -----BEGIN CERTIFICATE----- ...
但是當我使用時,我應該根據我的理解,
starttls
並且starttls_required
:listen: - port: 5222 ip: "::" module: ejabberd_c2s max_stanza_size: 262144 shaper: c2s_shaper access: c2s starttls: true starttls_required: true
然後 ejabberd 似乎沒有在埠上使用安全連接
5222
:openssl s_client -connect example.com:5222 CONNECTED(00000005) 140324192997824:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 5 bytes and written 315 bytes Verification: OK --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) ---
知道我能做些什麼來解決這個問題嗎?
為了使連接安全,您需要
tls: true
在偵聽器中指定。例如在下面的配置中,兩個埠5222
都5223
具有相同的設置,但5223
還包括tls: true
. 因此,您的openssl
測試將檢測埠上的安全連接,5223
但不會檢測到5222
.- port: 5222 ip: "::" module: ejabberd_c2s max_stanza_size: 262144 shaper: c2s_shaper access: c2s starttls_required: true - port: 5223 ip: "::" tls: true module: ejabberd_c2s max_stanza_size: 262144 shaper: c2s_shaper access: c2s starttls_required: true
附帶說明一下,如果仍然遇到問題,請嘗試更改
ca_file
為ca_file: "/home/ejabberd/conf/cacert.pem"
假設cacert.pem
是由 ejabberd 安裝程序創建的文件,而不是您的 LE。