작성
·
62
0
안녕하세요. 로컬 PC에서 elasticsearch를 도커 컨테이너로 구동하고 ( elasticsearch 8버전 )
python 프로젝트 ( python 3.11 버전 ) 는 로컬 ide에서 구동했을 때는 python 프로젝트 에서 --> elasticsearch 도커 컨테이너 까지의 https 요청이 정상적으로 수행되었습니다.
그런데 python 프로젝트를 컨테이너로 띄워서 elasticsearch 도커 컨테이너로 https 요청을 보내면 [ SSL routines:ssl3_read_bytes:sslv3 alert illegal parameter ] 이런 에러가 계속 발생합니다.
python 프로젝트의 openssl 버전은 1.1.1w이고 elasticsearch 프로젝트의 openssl 버전은 1.1.1f 입니다.
oepnssl로 디버깅 하기위해 openssl s_client -connect inspiring_noether:9200 -tls1_2 -CAfile ./http_ca.crt 를 실행하면 아래와 같이 출력됩니다.. 디버깅으로 보면 정상 통신으로 보이는데 어떤게 문제일까요,,?ㅠ
CONNECTED(00000003)
Can't use SSL_get_servername
depth=1 CN = Elasticsearch security auto-configuration HTTP CA
verify return:1
depth=0 CN = a7cf2750c76a
verify return:1
---
Certificate chain
0 s:CN = a7cf2750c76a
i:CN = Elasticsearch security auto-configuration HTTP CA
1 s:CN = Elasticsearch security auto-configuration HTTP CA
i:CN = Elasticsearch security auto-configuration HTTP CA
---
Server certificate
--- http_ca.crt 인증서 내용 ----
subject=CN = a7cf2750c76a
issuer=CN = Elasticsearch security auto-configuration HTTP CA
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 6541 bytes and written 281 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: 362F6B5369DB4D85D09490F9D30E7DF66367B120D1EDEF9DF0013644F1D0FCA8
Session-ID-ctx:
Master-Key: 5C3994FFD364BFF28A8990102CA6EDCC99D9F8AEBD0B9E2905DA3F9B6BE1CF3F8787648205B6F46AD3D1D8CA7A7EEA02
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 86400 (seconds)
TLS session ticket: ----- session ticket 내용 -----
Start Time: 1744073205
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: yes
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
qpal1zm23님, 도커 환경에서 발생하는 SSL 이슈 해결을 위해 몇 가지 점검해야 할 사항들을 안내드리겠습니다.
Container Network: Python 컨테이너와 Elasticsearch 컨테이너가 동일한 네트워크에 속해 있는지 확인하세요. 도커 컨테이너끼리는 기본적으로 서로 다른 네트워크에 있으면 통신이 차단될 수 있습니다.
DNS 및 호스트 설정: Python 컨테이너에서 Elasticsearch 컨테이너의 이름이나 IP 주소로 접근하고 있다면, 올바르게 설정되어 있는지 확인해 보세요. 컨테이너 간 통신 시 DNS 이름이 올바르게 설정되어야 합니다.
SSL 설정: 제공된 openssl
명령을 통해 SSL 설정은 문제가 없는 것으로 보입니다. 그렇다면, Python 프로젝트의 SSL 설정이 올바른지, 특히 사용되는 인증서 경로나 형식이 맞는지 확인해야 합니다. 인증서 파일 권한이 부족하지 않은지 확인해 보세요.
Python 라이브러리 버전 확인: Python에서 사용하는 HTTP/S 관련 라이브러리(requests
, urllib3
등)가 최신 버전인지 확인하시고, 해당 라이브러리의 SSL 옵션이 제대로 설정되어 있는지 확인하세요.
OpenSSL 호환성: OpenSSL의 하위 버전 호환성 문제일 수도 있으니, 두 컨테이너 모두 OpenSSL의 동일한 또는 호환 가능한 버전을 사용하고 있는지 확인해 보세요.
위의 방법을 확인 후에도 문제가 발생한다면, 추가적인 로그나 오류 메시지를 확인하여 좀 더 구체적인 원인을 파악해야 할 수도 있습니다.
관련 Spring Boot SSL 설정 문서 보기
도움이 되셨기를 바랍니다! 추가적인 질문이 있으시면 언제든지 알려주세요.