dovecot: localhost에서 인증서를 받았지만 외부에서는 인증서를 얻지 못했습니다.

dovecot: localhost에서 인증서를 받았지만 외부에서는 인증서를 얻지 못했습니다.

며칠 전까지만 해도 dovecot/postfix/fail2ban 설정이 완벽하게 잘 돌아가고 있었습니다. 외부(예: 내 로컬 호스트)에서 연결하면 다음과 같은 결과가 나타납니다.

CONNECTED(000002F8)
write:errno=10054
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 326 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol  : TLSv1.2
Cipher    : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg   : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1569483184
Timeout   : 300 (sec)
Verify return code: 0 (ok)
---

하지만 로컬로 연결하면

    me@example:/etc/dovecot/conf.d$ openssl s_client localhost:995
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-----
bla
-----END CERTIFICATE-----
subject=CN = example.com

issuer=C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: ECDH, P-384, 384 bits
---
SSL handshake has read 3274 bytes and written 767 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: bla
    Session-ID-ctx:
    Resumption PSK: bla
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    bla

    Start Time: 1569483321
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: bla
    Session-ID-ctx:
    Resumption PSK: bla
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    bla

    Start Time: 1569483321
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
+OK Dovecot (Ubuntu) ready.

로그를 검색해봤는데 의심스러운 점은 발견되지 않았습니다. 그리고 결국에는 localhost에 연결할 수 있고 인증서를 얻을 수 있다고 분명히 나와 있습니다. 그런데 외부에서는 ( ) 접속이 가능 CONNECTED(000002F8)하지만 인증서를 받지 못합니다.

어디를 봐야 할까요..? 잠재적으로 그러한 문제를 일으킬 수 있는 것은 무엇입니까?

감사해요!

답변1

write:errno=10054
...
SSL 핸드셰이크에서 0바이트를 읽고 326바이트를 썼습니다.

먼저 연결할 수 있는 동안 연결은 재설정됩니다(10054는 WSAECONNRESET - 피어에 의한 연결 재설정입니다). 가능한 원인은 TLS 핸드셰이크가 확인되고 이 프로토콜이 허용되지 않을 때 연결을 차단하는 클라이언트와 서버 사이의 심층 검사 방화벽 때문입니다. 이로 인해 서버에서 데이터를 읽을 수 없습니다("... 0바이트를 읽었습니다.") 따라서 인증서나 TLS 핸드셰이크의 다른 서버 측 부분도 없습니다.

관련 정보