최근에, PyDrive2를 사용하는 프로젝트가 다음과 비슷한 오류를 뿜어내면서 동작을 하지 않았다.

ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2396)


이 프로젝트는 안정성을 위해 2개가 돌아가고 있었는데, 하나는 제대로 동작을 했다.

문제를 파악하기 위해 같은점과 다른점을 찾았을때

  • 빌드를 통한 같은 파이썬 버젼 (3.10.8)

같았던점은 이랬고

  • 두개의 다른 VPS 제공자에서 동작중
  • 다른 리눅스 배포판(CentOS, Archlinux) 사용중

이런 다른점을 가지고 있었다

여러가지 확인을 한 결과 (OpenSSL 1.1.1k  FIPS 25 Mar 2021) 와 (OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022) 로 다른 OpenSSL를 사용하고 있었고, 따라서

https://dev.to/nikolastojilj12/update-openssl-to-3-0-on-centos7-150o

다음 링크를 따라해서 빌드 및 설치(yum install perl-Pod-Html 가 설치에 추가로 필요했던걸로 기억한다)를 하는데

openssl 설정을 ./config --prefix=/usr/local/openssl 로 바꿔서 했다. 다음 파이썬 빌드는

./configure --enable-optimizations -C --with-openssl=/usr/local/openssl --with-openssl-rpath=auto

이런식으로 한 뒤

https://stackoverflow.com/questions/37055420/python-how-can-i-tell-if-my-python-has-ssl

python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"

이 명령을 따라서 확인을 했다... 만 똑같아서

https://docs.python.org/3/using/unix.html#custom-openssl

문서를 찾다가 이런걸 찾았다. 아니 이런게 있을줄이야

python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"

업데이트 된 결과로 잘 떴다... 만,

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 오류가 뜨면서 되질 않는다... 흐음


좀더 이것저것 시도를 해봐야 할 듯 하다.

Lightsail에서 제공되는 Ubuntu 20.04를 설치한 뒤 최신 버젼으로 업데이트 하는것으로 해결된걸로 보인다