この疑問に回答します。
今まで、Openssl を利用しSSL証明書を作ったことが無かったです。初めて Openssl を利用したSSL証明書でのApacheを構築しましたのでまとめます。
秘密鍵(keyファイル)のパスフレーズが合わない
秘密鍵にパスフレーズが入力されていると、apache(httpd)を起動する際にパスフレーズの入力を求められます。
# systemctl restart httpd Enter SSL pass phrase for [mydomain]:443 (RSA) : ********** Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
お恥ずかしながら、私は今まで知らなかった。
SSLアクセラレーターを利用することばかりで秘密鍵から作成することが初めてです。
何故か、正しいパスフレーズを入力しても起動できません。
既に認証局からサインされたSSL証明書が発行されています。
ここで解決できないとCSRから作り直すのが手っ取り早いので、パスフレーズ無しで秘密鍵を作ればよかったと後悔しています。
今回利用した認証局では、証明書の再発行は面倒臭いことが判明しました。
Broadcast messageが発報される
apache(httpd)の起動時にパスフレーズの入力を求めるブロードキャストのメッセージが出力されます。
Password entry required for 'Enter SSL pass phrase for [mydomain]:443 (RSA) :' (PID 3302). Please enter password with the systemd-tty-ask-password-agent tool!
パスフレーズの入力は、「systemd-tty-ask-password-agent」コマンドを利用することで、誰でも(別コンソール)入力できるようです。マルチユーザーの概念ですね。
「パスフレーズが合わない」ことと関係ありません。別コンソールからでもパスフレーズが入力できるってことです。
systemd-tty-ask-password-agent コマンドの使い方
別のコンソールからでも、SSLパスフレーズ入力に対応することができます。
# systemd-tty-ask-password-agent Enter SSL pass phrase for [mydomain]:443 (RSA) : **********
ちなみに、私の環境では、systemd-tty-ask-password-agentコマンドを利用して、正しいパスフレーズを入力しても起動できませんでした。
証明書の再発行
今回利用した認証局は、証明書の再発行の認証方法が「メール認証」でした。
認証局が指定するメールアドレスに承認確認メールが届き、メール本文に従って承認作業を行って証明書が再発行されます。
メールサーバーを構築する必要があるので、面倒臭いから辞めました。
秘密鍵ファイルのパスフレーズ解除
証明書の再発行を諦めて、秘密鍵ファイルのパスフレーズ解除で対応することにします。
組込まれたパスフレーズの内容を確認する
openssl rsaコマンドに-textのオプションをつけて実行してパスフレーズが正しいことを確認します。
今回は、「パスフレーズが正しいのに、何故かApacheの起動でパスフレーズが通らない」ので、この方法で試します。
# openssl rsa -text < secret.key Enter pass phrase: Private-Key: (2048 bit) modulus: 00:cb:81:d2:78:d9:fc:1c:63:f4:b6:be:2c:4b:a5: b4:54:4f:ca:e0:83:24:6c:16:dd:4c:61:b8:fd:3a: (中略) -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAy4HSeNn8HGP0tr4sS6W0VE/K4IMkbBbdTGG4/TplZUskg05Y (中略) SaYOKMsI4J1XhGbaT3XDQCD6g4XpJZFS0XIKmcZhRmIqkyjKfB11wg== -----END RSA PRIVATE KEY-----
パスフレーズを入力することで、秘密鍵ファイルの内容を、確認することができました。
パスフレーズ解除の手順
秘密鍵のバックアップ # cp secret.key secret.key.org パスフレーズ解除 # openssl rsa -in secret.key -out secret-nopass.key Enter pass phrase for [mydomain]: writing RSA key
簡単ですね。
再度、秘密鍵ファイルの内容を確認します。
# openssl rsa -text < secret.key Private-Key: (2048 bit) modulus: 00:cb:81:d2:78:d9:fc:1c:63:f4:b6:be:2c:4b:a5: b4:54:4f:ca:e0:83:24:6c:16:dd:4c:61:b8:fd:3a: (中略) -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAy4HSeNn8HGP0tr4sS6W0VE/K4IMkbBbdTGG4/TplZUskg05Y (中略) SaYOKMsI4J1XhGbaT3XDQCD6g4XpJZFS0XIKmcZhRmIqkyjKfB11wg== -----END RSA PRIVATE KEY-----
パスフレーズなしで秘密鍵ファイルの内容が確認できました。
これでパスフレーズを解除した秘密鍵さ作成されましたので、apacheの設定ファイルに組込めば完了です。
Jun 11 15:40:54 [mydomain] systemd: Starting The Apache HTTP Server... Jun 11 15:40:54 [mydomain] systemd: Started The Apache HTTP Server.
無事に起動することが出来ました。
以上、「SSLを組み込みApache(HTTPD)でパスフレーズ入力が合わず起動できない」という記事でした。