Contenu connexe Similaire à Ssl証明書を設定したらapacheが起動しない? Similaire à Ssl証明書を設定したらapacheが起動しない? (20) Ssl証明書を設定したらapacheが起動しない?2. アジェンダ
お話する内容
• httpはOKでも、httpsはNG
• SSL証明書の更新で失敗
• パスフレーズ確認
OS起動時 CentOS5と6の違い?
2012/12/21 -1- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
3. httpはOKでも、httpsはNG
httpはOKでも、httpsはNG
• Linuxをインストール
↓
• Apacheをインストール
↓
• Webコンテンツをアップロード
– サイトが見れたので、問題なしと判断。
– Apacheを再起動してみても問題なく再起動できる。
↓
• SSL証明書を設置
– SSLを使いたいので、mod_sslモジュールをインストール
↓
• Apache再起動
↓
# /etc/init.d/httpd restart
2012/12/21 -2- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
4. httpはOKでも、httpsはNG
httpd を起動中: Syntax error on line 114 of /etc/httpd/conf.d/ssl.conf:
SSLCertificateFile: file '/root/ssl/server.crt' does not exist or is empty
[失敗]
「 file '/root/ssl/server.crt' does not exist or is empty 」
証明書がない・・・?
• 証明書(server.crt)は、確かに指定の場所に存在する。
• ファイル名も間違っていない。
• ファイルのパーミッションも間違っていない。
→エラーメッセージの意味が分からないよ。。。
でも、サイト停止した状態だよ。
なんとかしないと。
2012/12/21 -3- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
5. httpはOKでも、httpsはNG
原因は?
SELinuxが邪魔をしています。
Nov 2 15:56:30 www1 kernel: type=1400 audit(1351839390.871:6): avc: denied { search } for
pid=1592 comm="httpd" name="ssl" dev=vda3 ino=545136
scontext=system_u:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=dir
(※/var/log/messagesより抜粋)
CentOS5以降の場合、意図的に停止しない限り、SELinuxが有効になっています。
(Version4までは、OSインストール時にSELinuxの有効/無効を指定できます)
今回は「httpdが、新たにインストールされたmod_sslにアクセスしようとした際、
SELinuxのアクセス制御機能によって拒否された」ということが原因です。
2012/12/21 -4- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
6. httpはOKでも、httpsはNG
許可するには?
allow httpd_t user_home_t:dir search;
という許可をポリシーに追加すればいいですが、都度書くのは面倒。
それ以前に、SELinux難しい・・・。
こんなこと益々やってらんない!!
既に絶版・・・
2012/12/21 -5- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
7. httpはOKでも、httpsはNG
これでアクセス制御はしなくなりますが、動作は
対策 し続けているので、若干サーバのパフォーマン
スが下がります。
完全に停止させておいた方がよいでしょう。
[SELinuxのアクセス制御停止]
サーバを停止させずにSELinuxの機能を切りたい場合
確認方法
# getenforce
Enforcing ←SELinuxのアクセス制御が有効になっています。
変更方法
# setenforce 0 ←「0」で「Permissive」モードに変更します。
# getenforce ←設定が変わったかどうか確認します。
Permissive ←確かに変わりました。
Permissiveモードは、アクセス制御機能は停止していますが、SELinux自体は各種アクセ
スを監視し、情報をログに出力しています。
2012/12/21 -6- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
8. httpはOKでも、httpsはNG
対策
[SELinuxの完全停止]
完全にSELinuxを停止させたい場合
「/etc/sysconfig/selinux」という設定ファイルを変更します。
SELINUX=enforcing
↓
SELINUX=disabled
設定を反映させる為、サーバを再起動します。
サーバ起動後
# getenforce
Disabled ←SELinuxのアクセス制御が完全に停止しています。
2012/12/21 -7- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
9. 証明書の更新で失敗
証明書の更新で失敗
• Goolgle検索
↓
• コマンドをそのままコピペで実行(諸々の作業をopensslコマンドで実行)
↓
• 証明書の設置完了!
↓
↓ 時は流れて、証明書の更新時期が。
↓
• Google検索
↓
• 証明書のファイルを置き換え(中身を書き換え)
↓
• Apache再起動で更新完了!
↓
# /etc/init.d/httpd restart
2012/12/21 -8- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
10. 証明書の更新で失敗
httpd を停止中: [ OK ]
httpd を起動中: Apache/2.2.3 mod_ssl/2.2.3 (Pass Phrase Dialog)
Enter pass phrase: パスワード入力待ち
パスフレーズを入力するまで、Apacheは起動できません。
パスフレーズを思い出せなかったり、メモ書きが行方不明の場合は、、、
Web閲覧できない障害になります!!
2012/12/21 -9- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
11. 証明書の更新で失敗
対策
[パスフレーズの削除]
秘密鍵ファイルを直接見てみます。
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,8F3BC65766447343B453530E499C9F11
+lSpfYi0jWe9zcd3kOVJ4F…
(以下略)
パスフレーズがかかっていると、ENCRYPTEDという文字列が入ります。
パスフレーズの解除
openssl rsa -in [鍵ファイル] -out [鍵ファイル]
-inで指定した鍵ファイルを読み込み、-outで指定したファイルに書き込む形になります。
上記で、入出力共に同じファイルを指定する場合、最初に作成した鍵ファイルが上書きされます。
上書きを避けるには、別のファイル名を指定してください。
※上書きする場合は、元のファイルのバックアップは必ずとっておきましょう!
2012/12/21 - 10 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
12. 証明書の更新で失敗
やってみます。
# openssl rsa -in server.key -out server.key
「server.key」ファイルの中身を見てみます。
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCfvnag0XZs1gGkVe8BQP5GaaA
(以下略)]
「ENCRYPTED」という記述がなくなり、パスフレーズが外れました。
2012/12/21 - 11 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
13. 証明書の更新で失敗
パスフレーズが入っていると困ること
例) 急なトラブルでOSそのものを再起動しなければいけないとき
自宅から、データセンターにあるサーバ自体を再起動した。
↓
パスフレーズの入力待ちで、サーバ起動処理自体が途中で停止。
↓
気づかず、長時間のサイト停止!
こういう場合は、リモートからサーバへログインして手動でApacheを起動させます。
※SSHの起動順序がApacheの起動よりも後になるように変えていた場合、Apacheのパスフ
レーズ待ちでOSの起動処理が停止するので、リモートログインできなくなります。
この場合、サーバに直接モニターをつなぎ、パスフレーズを入力して起動処理を進めないと
いけなくなります。
2012/12/21 - 12 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
14. CentOS5/6の違いってある?
実際の画面 (CentOS5の場合)
OS起動時の画面。
Apache起動時に、SSL証明書(ssl.example.com)のパスフレーズを聞いてきています。
ここで、パスフレーズを入力すると、OS起動処理が進みます。
2012/12/21 - 13 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
15. CentOS5/6の違いってある?
実際の画面 (CentOS6の場合)
デフォルトの場合、起動画面は白いプログレスバーが伸びていくアニメーションに
なっています。
SSLのパスフレーズがかかっていると、どうなるでしょうか?
このように、起動が完了したように見えても、ログインプロンプトが出て来ません。
通常は、OSの起動が完了すると、以下のようにログインプロンプトが出てきます。
※「Esc」キーで、以前のようなブートプロセス表示とプログレスバー表示の交互に切り替えることができます。
2012/12/21 - 14 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
16. CentOS5/6の違いってある?
実際の画面 (CentOS6の場合)
パスフレーズの入力を促すような表示はありませんが、この状態でもパスフレーズの
入力待ちなので、このまま入力すると、処理が進みます。
以前のように、起動シーケンスが見えるようにするには、「grub.conf」を編集します。
(grub.confから「rhgb quiet」を削除するだけです。詳細は割愛。)
2012/12/21 - 15 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
17. ご清聴ありがとうございました。
広告スペース
設計から運用まで、
安全・安心ホスティング
単体サーバから複数台構成まで幅広く対応致します。
証明書取得、設置~更新代行まで承ります。
2012/12/21 - 16 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.