SlideShare a Scribd company logo
SSL証明書とApache運用
 ~ちょっと気をつけるだけでトラブル防止~



サーバ運用超入門勉強会

            Copyright Digital-Effect Network Co., Ltd. All rights reserved.
アジェンダ


       お話する内容

       • httpはOKでも、httpsはNG

       • SSL証明書の更新で失敗

       • パスフレーズ確認
         OS起動時 CentOS5と6の違い?



2012/12/21         -1-   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
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.
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.
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.
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.
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.
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.
証明書の更新で失敗


       証明書の更新で失敗
       •     Goolgle検索
              ↓
       •     コマンドをそのままコピペで実行(諸々の作業をopensslコマンドで実行)
              ↓
       •     証明書の設置完了!
              ↓
              ↓ 時は流れて、証明書の更新時期が。
              ↓
       •     Google検索
              ↓
       •     証明書のファイルを置き換え(中身を書き換え)
              ↓
       •     Apache再起動で更新完了!
              ↓

      # /etc/init.d/httpd restart
2012/12/21                  -8-   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
証明書の更新で失敗
       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.
証明書の更新で失敗


       対策
       [パスフレーズの削除]
       秘密鍵ファイルを直接見てみます。
      -----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.
証明書の更新で失敗
      やってみます。
      # 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.
証明書の更新で失敗

       パスフレーズが入っていると困ること
       例) 急なトラブルでOSそのものを再起動しなければいけないとき

             自宅から、データセンターにあるサーバ自体を再起動した。
              ↓
             パスフレーズの入力待ちで、サーバ起動処理自体が途中で停止。
              ↓
             気づかず、長時間のサイト停止!


   こういう場合は、リモートからサーバへログインして手動でApacheを起動させます。

   ※SSHの起動順序がApacheの起動よりも後になるように変えていた場合、Apacheのパスフ
     レーズ待ちでOSの起動処理が停止するので、リモートログインできなくなります。
     この場合、サーバに直接モニターをつなぎ、パスフレーズを入力して起動処理を進めないと
     いけなくなります。




2012/12/21            - 12 -   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
CentOS5/6の違いってある?
       実際の画面 (CentOS5の場合)




   OS起動時の画面。
   Apache起動時に、SSL証明書(ssl.example.com)のパスフレーズを聞いてきています。
   ここで、パスフレーズを入力すると、OS起動処理が進みます。

2012/12/21                  - 13 -   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
CentOS5/6の違いってある?
       実際の画面 (CentOS6の場合)

       デフォルトの場合、起動画面は白いプログレスバーが伸びていくアニメーションに
       なっています。




       SSLのパスフレーズがかかっていると、どうなるでしょうか?
       このように、起動が完了したように見えても、ログインプロンプトが出て来ません。




       通常は、OSの起動が完了すると、以下のようにログインプロンプトが出てきます。




       ※「Esc」キーで、以前のようなブートプロセス表示とプログレスバー表示の交互に切り替えることができます。

2012/12/21                  - 14 -   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
CentOS5/6の違いってある?
       実際の画面 (CentOS6の場合)

       パスフレーズの入力を促すような表示はありませんが、この状態でもパスフレーズの
       入力待ちなので、このまま入力すると、処理が進みます。




       以前のように、起動シーケンスが見えるようにするには、「grub.conf」を編集します。
       (grub.confから「rhgb quiet」を削除するだけです。詳細は割愛。)




2012/12/21                  - 15 -   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
ご清聴ありがとうございました。




広告スペース
                          設計から運用まで、
                          安全・安心ホスティング
                        単体サーバから複数台構成まで幅広く対応致します。

      証明書取得、設置~更新代行まで承ります。
2012/12/21     - 16 -      Copyright Digital-Effect Network Co., Ltd. All rights reserved.

More Related Content

What's hot

いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
Takatoshi Matsuo
 
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介ksk_ha
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringPacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Takatoshi Matsuo
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Microsoft License の基本
Microsoft License  の基本Microsoft License  の基本
Microsoft License の基本
祥子 松山
 
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
Yasunori Goto
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
 
Spring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へSpring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へ
movmov
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
Soudai Sone
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみる
Yagi Shinnosuke
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
Tomohisa Kusukawa
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service Overview
Takeshi Fukuhara
 

What's hot (20)

いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringPacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Microsoft License の基本
Microsoft License  の基本Microsoft License  の基本
Microsoft License の基本
 
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
Spring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へSpring Framework 4.3から5.0へ
Spring Framework 4.3から5.0へ
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみる
 
SSH力をつけよう
SSH力をつけようSSH力をつけよう
SSH力をつけよう
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service Overview
 

Similar to Ssl証明書を設定したらapacheが起動しない?

Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
Yu Komiya
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみた
Yoshinori Teraoka
 
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
Takashi Uemura
 
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果wwwAzure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
Masahito Zembutsu
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたdo_aki
 
Azure de debian
Azure de debianAzure de debian
Azure de debian
Kazumi Hirose
 
Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03博康 三井
 
Aws cent os7_wordpress_2
Aws cent os7_wordpress_2Aws cent os7_wordpress_2
Aws cent os7_wordpress_2
Naoyuki Sano
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境yut148atgmaildotcom
 
超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編
Shin Tanigawa
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
Masahito Zembutsu
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
Midori Oge
 
SANsymphony-Vを使ったSoftLayerへの簡単データ移行
SANsymphony-Vを使ったSoftLayerへの簡単データ移行SANsymphony-Vを使ったSoftLayerへの簡単データ移行
SANsymphony-Vを使ったSoftLayerへの簡単データ移行
Hironori Tanaka
 
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことWebサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことTrinityT _
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
 
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
hiroya
 
Power shellmemo
Power shellmemoPower shellmemo
Power shellmemoytanno
 

Similar to Ssl証明書を設定したらapacheが起動しない? (20)

Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
STNSサーバーを書いてみた
STNSサーバーを書いてみたSTNSサーバーを書いてみた
STNSサーバーを書いてみた
 
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
 
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果wwwAzure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
 
Azure de debian
Azure de debianAzure de debian
Azure de debian
 
Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03
 
Aws cent os7_wordpress_2
Aws cent os7_wordpress_2Aws cent os7_wordpress_2
Aws cent os7_wordpress_2
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編
 
20121205 jjbug
20121205 jjbug20121205 jjbug
20121205 jjbug
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
SANsymphony-Vを使ったSoftLayerへの簡単データ移行
SANsymphony-Vを使ったSoftLayerへの簡単データ移行SANsymphony-Vを使ったSoftLayerへの簡単データ移行
SANsymphony-Vを使ったSoftLayerへの簡単データ移行
 
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのことWebサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
 
Power shellmemo
Power shellmemoPower shellmemo
Power shellmemo
 

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.