Apache SSL設定 -秘密鍵の発行→CSR発行→証明書購入→証明書のインストール→Apache再起動-

概要

  • OpenSSLのバージョン確認からCSR発行・SSLの作成方法を記載します。
  • 流れは秘密鍵の発行→CSR発行→証明書購入→証明書のインストール→Apache再起動です。
  • CSRの方式はSHA-2の発行方法です。
  • 確認ツールも紹介します。

OpenSSLのバージョン確認

ターミナルで下記コマンドを実行します。

bash
$ openssl version

OpenSSL 1.0.1e-fips 11 Feb 2013

秘密鍵の作成

ディレクトリの作成(Apacheの設定ファイルが入っているディレクトリに作成してください。)
パスフレーズは解除しますが、必ずメモをとっておいてください。

bash
$ mkdir /etc/httpd/ssl/
$ cd /etc/httpd/ssl/
$ openssl genrsa -des3 -out コモンネーム.key 2048

CSR発行

-sha256オプションを入れるとSHA-2形式のCSRを発行できます。
※SHA-2形式だとガラケーが対応できないので注意。

お客様に確認する必要情報

フィールド 説明 サンプル
Country Name※ 国を示す2文字のISO略語です。 JP
State or Province Name※ 組織が置かれている都道府県です。 Tokyo
Locality Name※ 組織が置かれている市区町村です。 Meguro-ku
Organization Name※ 組織の名称です。 7hack
Organization Unit Name 組織での部署名です。※指定がない場合は – (ハイフン)を入力してください。 Sales
Common Name※ ウェブサーバのFQDNです。 ssl.7hack.net
Email Address 入力不要です。
A challenge password 入力不要です。
An optional company name 入力不要です。

CSR発行コマンド

CSRを発行します。

bash
$ openssl req -new -sha256 -key コモンネーム.key -out コモンネーム.csr
参考 CSR確認ツールCSR確認ツール

証明書の購入

グローバルサインやサイバートラスト等で証明書を購入してください。

証明書のインストール

証明書

発行された証明書をコピーして、vimで貼り付けます。

bash
$ vim /etc/httpd/ssl/コモンネーム.crt
証明書貼り付け

中間証明書

発行された中間証明書をコピーして、vimで貼り付けます。
通常は購入時にリンクがあってそこからダウンロードします。

bash
$ vim /etc/httpd/ssl/コモンネーム.cer
証明書貼り付け証明書貼り付け
参考 証明書確認ツール証明書確認ツール

Apache mod_sslのインストール

Apacheにmod_sslがインストールされていない人はインストールします。

bash
$ yum install mod_ssl

VirtualHost設定

DocumentRootやドメイン・コモンネームは適宜変更します。

bash
$ vim /etc/httpd/conf.d/ssl.conf

  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
  ErrorLog logs/ssl_error_log
  TransferLog logs/ssl_access_log
  LogLevel warn

  SSLEngine on
  SSLProtocol All -SSLv2 -SSLv3
  SSLCipherSuite AES128+EECDH:AES128+EDH
  SSLHonorCipherOrder on
  Header add Strict-Transport-Security "max-age=15768000"

  BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_admin_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  SSLCertificateChainFile /etc/httpd/ssl/コモンネーム.cer
  SSLCertificateFile /etc/httpd/ssl/コモンネーム.crt
  SSLCertificateKeyFile /etc/httpd/ssl/コモンネーム.key
  ServerName ドメイン:443
  DocumentRoot "/var/www/html"
  <Directory "/var/www/html">
    Options All
    AllowOverride All
    Require all granted
  

# Virtual Host外に下記を記述
SSLCompression off

秘密鍵パスフレーズの解除

必ず最初に作成した秘密鍵はコピーしてバックアップしておいてください。

bash
$ cp コモンネーム.key コモンネーム.key.org
$ openssl rsa -in コモンネーム.key -out コモンネーム.key

解除された秘密鍵が表示できるかの確認します。
パスフレーズが聞かれず、証明書が表示できること。

bash
$ openssl rsa -text -noout -in /etc/httpd/ssl/コモンネーム.key

Apache再起動

※設定ファイルの確認は必ずおこなってください。

bash
$ apachectl configtest
$ apachectl reload

関連ツール

証明書確認ツール

参考 サーバ証明書の設定確認 サポート -サイバートラストサーバ証明書の設定確認 サポート -サイバートラスト

パスワード発行ツール

参考 ランダムパスワード発行ツールランダムパスワード発行ツール

まとめ

  • 秘密鍵の発行→CSR発行→証明書購入→証明書のインストール→Apache再起動
  • めんどくさいコマンド系をまとめました。
  • 最近はAWSでは無料のSSLをインストールするほうが早いですが、ロードバランサーのコストが毎月発生します。
  • KING SSLはワイルドカードでも格安なのでおすすめです。