現場でhaproxxy を設定する機会があったのですが、
unable to load SSL private key from PEM file
というエラーにハマってしまったのでメモ
private key がうまく読み込まれない
設定ファイル
/etc/haproxy/haproxy.cfgの設定はひとまず例でこんな感じ
frontend default
bind *:443 ssl crt /etc/haproxy/default.pem
この/etc/haproxy/default.pem に問題あり
確認したこと
PEMファイルの構成
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----
- 証明書
- 中間証明書
- 秘密鍵
の順番になっていること
PEMファイルの中身は改行されている?
ぐぐると結構ヒットするエラーですが、
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
が
-----END CERTIFICATE----------BEGIN RSA PRIVATE KEY-----
になっていないかって話
確認しても問題なし
秘密鍵が暗号化されている?
秘密鍵の最初がこんな感じだったら
秘密鍵が暗号化されているので解除する必要あり
—–BEGIN RSA PRIVATE KEY—–
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,BCC23A5E16582F3D
hfWyPkea3gnVCHCZJ/zgQpCH9RZF7WjYXGYohdbfkJY0ETLwXaqjvnNHQlLomwIt
参照:https://rms.ne.jp/sslserver/basis/decrypt_key/
今回、自分がハマった原因も、秘密鍵が暗号化されていました。
秘密鍵の暗号化を解除
openssl rsa -in private.key -out decrypt-private.key
これで秘密鍵をdecryptすると以下のような形式
—–BEGIN RSA PRIVATE KEY—–
MIICXQIBAAKBgQCot9aa9R38QevFSWqU718VFxqEDcY4gJfdZ6sBy282jdgCVcwU
q92tQ5V3amQanoSIWxI/O9GYm5kJSo3b2qGib2sqLiHZFav/bRjL5IDFOMwcSTyp
O0I9otCK72/rrxMl+Gt8b5saEiIdmGO4ar9AM2DYYQCFKYR62mDZ7mRa6wIDAQAB
AoGBAJWy0CqblGhvgSeCdZwCK+ZFopRKuHcHujeLtRKZk2rfPisMP1CUEdObJLJY
5ssrnUJzM+SBSf5TCN1Slj3dZg2NRBq+68L1dR+3voEWv2ebPhzicjw81l0xuVoX
HbXhM052Bmhp8XWZd3VdKXyQuTQeh17F4R2o39r9vP88pGnRAkEA4OxTu4p6gAxF
l4JwiqFeswdoq/jEj9KkKGy/wM4psGQqUrzWzgKmN+R1NpSRWcyohpSOsU8yFcHb
bydNYvYj0wJBAMAHgQENrGx+3XEzcCx3uY8vv1gvcNFou0RKKcoaHyf8n028AJAf
ZAM/7h+cFcJVYEeb8n54ED4979c+gr3ttYkCQD444okVLAJUYsQhL6UKMzpvqEM6
1JW8/fC49OsPnXTQoOy2lO30yarYppxsyTEAbvacDkV61S4zrNK5Gq1vzkUCQF45
0GVR7k92mPZZBSvsu5K1HTEKZlN7Dpjdw0+2LZ+TaB/epnAR1yN5FUFRd6PZ/Npm
fUDtbRr9jViTBdhocfECQQDfxT3bUNjvJUeWQieQg2ooj7yzbjMD5MjA+9z+qh1V
Cb+4kQSEWrP7EdJk4cOHOH+ZYjinf77x8v2PbnaKE5Dc
—–END RSA PRIVATE KEY—–
あとは
証明書、中間証明書、復号化した秘密鍵を組み合わせてPEMファイルを作成し、
haproxy を起動すると、無事解決!