さくらのVPSでCentOS7のサーバーを構築する 番外編…IPアドレスベースSSL

本ブログの「さくらのVPSでCentOS7のサーバーを構築する」シリーズ本編では、サーバーの起動からWordPressが稼働を開始するところまでの手順を解説しました。今回は番外編として、「IPアドレスベースSSL」の導入方法を解説します。

もくじ

  • 番外編…IPアドレスベースSSL
    • 下準備
    • SSLサーバー証明書の発行申請作業
    • SSLサーバー証明書の設置・設定
  • 番外編…SNI SSL
  • 番外編…Apache再起動時に秘密鍵のパスフレーズ入力をサボる方法
  • 番外編…「Let’s Encrypt」を使ってSSL/TLSサーバー証明書を無料で取得する

下準備

ApacheでSSL通信を行うためには、「OpenSSL」と「mod_ssl」が必要です。OpenSSLはデフォルトでインストールされているので、mod_sslを入れます。 [VIM] sudo yum install mod_ssl [/VIM]

また、ファイアウォールでHTTPSの通信を許可する必要があります。 [VIM] sudo firewall-cmd –add-service=https –zone=public –permanent sudo firewall-cmd –reload [/VIM]

SSLサーバー証明書の発行申請作業

SSLを導入するためには、「SSLサーバー証明書」を用意する必要があります。SSLサーバー証明書は、

  1. 鍵ペア・CSR作成
  2. 認証局にCSRを送信して証明書の発行を申請
  3. (審査を通過すれば)証明書発行
  4. 証明書をサーバーに設置、SSL使用開始
という流れで入手し、サーバーに導入します(個人の場合)。まずは鍵ペアのうち、秘密鍵を作成しましょう。 [VIM] #SSLの鍵ファイルを保存するディレクトリを作成 sudo mkdir /etc/httpd/conf/ssl/example.net #SSLの鍵ファイルを保存するディレクトリに移動 cd /etc/httpd/conf/ssl/example.net #hogehoge2017.key が秘密鍵のファイル名。鍵の長さは2048(bit) sudo openssl genrsa -des3 -out hogehoge2017.key 2048 #鍵のパスフレーズを2回入力する(パスフレーズは忘れないこと) Enter pass phrase for hogehoge2017.key: Verifying – Enter pass phrase for hogehoge2017.key: #秘密鍵流出を防ぐためにパーミッションを400に変更 sudo chmod 400 hogehoge2017.key [/VIM] 作成した秘密鍵とそのパスフレーズは決して紛失しないように、また外部に流出しないように厳重に管理してください。なお、鍵ファイルの名前と場所をフルパスで指定するのであれば、ディレクトリ移動をせずにいきなり鍵作成コマンドを打ち込んでもいいです。

CSRの作成

CSR(Certificate Signing Request・証明書署名要求)は、SSLサーバー証明書を発行する時に認証局に提出するものです。CSRには公開鍵とサイト運営者等の情報が記録されます。 [VIM] #sudo openssl req -new -key 秘密鍵のファイル名 -out CSRのファイル名 sudo openssl req -new -key hogehoge2017.key -out hogehoge2017.csr #設定した秘密鍵のパスフレーズを入力 Enter pass phrase for hogehoge2017.key: [/VIM] ここからCSR情報を入力していきます。基本的には半角英数です。 [VIM] #国名コードを入力(日本ならJP) Country Name (2 letter code) [XX]:JP #都道府県を入力(ローマ字で) State or Province Name (full name) []:Chiba #市区町村名(都道府県と同じでもとりあえずOK(個人レベルなら)) Locality Name (eg, city) [Default City]:Chiba #組織名・会社名(個人ならサイト名などを適当に入れとく) Organization Name (eg, company) [Default Company Ltd]:Koguma #(部門名 空欄でもOK) Organizational Unit Name (eg, section) []:ssl1 #サイトのドメイン名 最重要 Common Name (eg, your name or your server’s hostname) []:hogehoge.net #何も打ち込まずにEnter Email Address []: Please enter the following ‘extra’ attributes to be sent with your certificate request #何も打ち込まずにEnter A challenge password []: #何も打ち込まずにEnter An optional company name []: [/VIM] ここまで終われば、CSRの作成も完了です。後はSSLサーバー証明書の発行申請をする認証局の指示に従い、CSR情報を提出してください。 [VIM] #CSRファイルの中身を見るコマンド cat hogehoge2017.csr [/VIM]

個人でもSSLサーバー証明書の発行申請を行える業者もあるので、自分のWEBサイトをSSLに対応させたい場合はいろいろな業者を比較検討してみましょう。

SSLサーバー証明書の設置・設定

CSRをSSLサーバー証明書発行業者(認証局)に提出し、審査を通過すればSSLサーバー証明書が発行されます。審査と言っても、個人の場合はドメインの正当な使用権があることを確認するだけなのでそこまで厳しくはありません。私はさくらのSSLの「ラピッドSSL」でSSLサーバー証明書を発行してもらいましたが、その時は認証局から渡されたファイルをサーバーにアップロードするだけで審査が終了し、証明書が発行されました。

SSLサーバー証明書が発行されたら、これをサーバーに設置する作業を行います。使用するファイルは、

  • SSLサーバー証明書(この中に公開鍵が入っている・認証局から渡される)
  • 証明書と対になる秘密鍵(サーバーに配置済み)
  • 中間CA証明書(認証局によっては必要・認証局から渡される)
です。ちなみにCSRの出番はありません。

証明書群の設置

まずは認証局から渡されたSSLサーバー証明書および中間CA証明書をアップロードしましょう。と言ってもファイルを丸ごとSFTP経由で送り込むのはパーミッションやSSHの設定の関係で厳しいかもしれないので、SSLサーバー証明書および中間CA証明書となるファイルをサーバー側で作成し、文字列をコピペすることで対応します。 [VIM] #SSLの鍵ファイルを保存するディレクトリに移動 cd /etc/httpd/conf/ssl/example.net #SSLサーバー証明書を作成 sudo vim hogehoge2017.crt #中間CA証明書を作成 sudo vim hogehoge2017.cer [/VIM] サーバー側で、SSLサーバー証明書のファイル名で新しいテキストファイルを作成しましょう。ファイルが開かれたら、認証局から渡されたSSLサーバー証明書(中身はただのテキストファイル)の文字列をまるごとコピペし、保存します。中間CA証明書も同様の手順で保存してください。

ファイルを開かずにファイル内の文字列をコピペする


編集画面にたどり着いたら、まずは「A」などのキーを押してVimを編集モードに切り替えましょう。そうしたら、文字列のコピペ元となるファイルをTera Termの画面にドラッグ・アンド・ドロップします。


こんな画面が出るので、「ファイル送信」を押します。


無事にテキストがコピーされたので、Vimで保存してください。なお、画像はSSH公開鍵アップロードの解説から流用しています。

設定ファイルの作成

設定ファイル自体はmod_sslインストール時に自動生成されるので、そちらを使ってもいいでしょう。このページでは設定ファイルを自分で作りますが、自動生成されたものと突き合わせれば十分対応できると思います。何はともあれ、設定ファイルを開きます。 [VIM] #自動生成される設定ファイルを無効化 sudo mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.old #設定ファイルを開く sudo vim /etc/httpd/conf.d/ssl.conf [/VIM]

設定ファイルは以下のようになります。 [VIM] Listen 443 https SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin #SSLRandomSeed startup file:/dev/random 512 #SSLRandomSeed connect file:/dev/random 512 #SSLRandomSeed connect file:/dev/urandom 512 SSLCryptoDevice builtin #SSLCryptoDevice ubsec #SSL2.0とSSL3.0は必ず無効化する SSLProtocol all -SSLv2 -SSLv3 #PHPをCGIモードで動かしたい時、他のファイル(バーチャルホストの設定ファイル等)に #php-cgi関係の設定がなければ記述する(あるなら書かない) ScriptAlias /php-hoge /var/www/cgi-bin/hoge-cgi/php-cgi #PHPをCGIモードで動かす場合はこれを記述する SuexecUserGroup hoge hoge ServerName example.net DocumentRoot /home/hoge/public_html/piyo ErrorLog /var/log/httpd/example.net_error_log CustomLog /var/log/httpd/example.net_access_log combined #PHPをCGIモードで動かす場合はここから下を記述 SetHandler php-cgi Action php-cgi /php-hoge #PHPをCGIモードで動かす場合はここから上を記述 SSLEngine on #SSLサーバー証明書を指定 SSLCertificateFile /etc/httpd/conf/ssl/example.net/hogehoge2017.crt #中間CA証明書を指定 SSLCertificateChainFile /etc/httpd/conf/ssl/example.net/hogehoge2017.cer #サーバー証明書と対になる秘密鍵を指定 SSLCertificateKeyFile /etc/httpd/conf/ssl/example.net/hogehoge2017.key SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!DH SSLHonorCipherOrder On [/VIM] 書き終えたら保存しましょう。

Apache再起動

SSLサーバー証明書の配置、設定ファイルの作成が終わったら、Apacheを再起動します。 [VIM] #文法チェック sudo apachectl configtest #Apache再起動 sudo systemctl restart httpd #起動時にSSLサーバー証明書と対になる #秘密鍵のパスフレーズを入力する必要がある Enter SSL pass phrase for example.net:443 (RSA) : [/VIM]

無事に再起動できれば、設定完了です。ちなみに、SSL Server Test (Powered by Qualys SSL Labs)ではSSLの設定の安全性を確かめることができます。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: