Apache 오류 로그에는 인증서에 DH 및 EC 매개변수가 필요합니다.

Apache 오류 로그에는 인증서에 DH 및 EC 매개변수가 필요합니다.

LetsEncrypt에서 새 SSL 인증서를 받은 후 7시간 동안 Apache 웹 서버를 시작하려고 시도했습니다. ECDSA 인증서를 얻었지만 여전히 서버를 시작할 수 없습니다. 로그는 다음과 같습니다.

[Thu Mar 29 19:23:43.839012 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Thu Mar 29 19:23:43.839038 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Thu Mar 29 19:23:43.839069 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Thu Mar 29 19:23:43.839086 2018] [ssl:emerg] [pid 19908:tid 140570990629824] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information
AH00016: Configuration Failed

VirtualHosts의 SSL 구성은 다음과 같습니다.

ServerName site.example.com
SSLCipherSuite HIGH:!MD5:!aNULL
SSLHonorCipherOrder     on
SSLCompression          off
SSLProtocol all -SSLv2 -SSLv3
Header add Strict-Transport-Security "max-age=15768000"
SSLCertificateFile /etc/letsencrypt/ecdsa/site.example.com/0001_chain.pem
SSLCertificateKeyFile /etc/letsencrypt/ecdsa/site.example.com/privkey.pem

답변1

조금 늦었지만 같은 오류 메시지에 대한 답변을 찾고 해결책을 찾는 사이에 이 페이지를 발견했습니다. 나처럼 httpd-2.2에서 VirtualHost 구성을 상속받았다면 아무런 문제가 없을 것이라고 확신합니다. openssl에 문제가 없을 수도 있습니다. 참고로 내 시스템에는 dhparams.pem 파일이 없습니다. 이는 httpd-2.4의 경우 약간 다른 것 같습니다. 첫 번째 힌트: 더 이상 VirtualHost 정의에만 의존할 수 없습니다. 너~ 해야 하다다음과 같이 conf.d/ssl.conf에서 유효한 인증서/키 쌍을 참조하십시오(위치는 내 Fedora 시스템용임).

SSL인증서 파일 /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.pem

내 것은 httpd-2.2/openssl-1.0.2h에서 상속된 자체 서명 인증서입니다. 인증서는 ASCII PEM 형식입니다. 키가 RSA 일반 복사본으로 변환되었으므로 httpd를 시작할 때 비밀번호가 필요하지 않습니다. (이 작업을 수행하기 전에 환경을 주의 깊게 평가하십시오.) 인증서가 무엇으로 만들어졌는지는 중요하지 않은 것 같습니다. 이는 여전히 클라이언트에 제공될 VirtualHost 섹션에 정의된 인증서이기 때문입니다. 나에게 있어 이 인증서(httpd-2.2에서 상속됨)는 PEM 짧은 형식이고 해당 키도 RSA 일반 사본 형식입니다. 물론 mod_ssl.so를 로드해야 하지만 httpd-2.2에서 작동한다면 이미 로드하고 있는 것입니다.

답변2

[Thu Mar 29 19:23:43.839012 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?

이 줄은 DH 매개변수를 사용했을 수 있음을 알려줍니다. 예를 들면 다음과 같습니다.

/etc/ssl/dhparams.pem

문제는 DH 보안을 강화하고 이 파일을 다음과 같이 사용하려는 경우입니다.

sudo openssl dhparam -out /etc/ssl/dhparams.pem.new 4096
sudo service apache2 stop
sudo mv /etc/ssl/dhparams.pem.new /etc/ssl/dhparams.pem
sudo service apache2 start

dhparams.pem비표준 위치에 파일을 저장하는 경우 Apache 구성에 파일 경로를 제공해야 합니다. 예를 들면 다음과 같습니다.

/etc/apache2/mods-enabled/ssl.conf

다음과 같이:

# Use my own generated DH Parameters file 4096 bits long
SSLOpenSSLConfCmd DHParameters "/etc/ssl/dhparams.pem"

[Thu Mar 29 19:23:43.839038 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?

이 줄은 ECDHParameters를 사용했을 수 있음을 알려줍니다.

IMHO, 자동 설정을 유지하는 것이 좋습니다.

SSLOpenSSLConfCmd ECDHParameters Automatic

자세한 내용은 을 참조하세요 man ecparam. 개인적으로 이 게임을 할 만한 설득력 있는 이유는 없습니다.


[Thu Mar 29 19:23:43.839069 2018] [ssl:emerg] [pid 19908:tid 140570990629824] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned

이 줄은 지정된 개인 키가 누락되었거나 전체 설정이 잘못 구성되었음을 알려줍니다.

관련 정보