LoginSignup
1
0

More than 3 years have passed since last update.

サーバーにSSL証明書を設置してHTTPS化する

Last updated at Posted at 2019-06-19

mod_sslインストール

yum install -y mod_ssl

privateディレクトリに移動。このディレクトリにcsr(証明書署名要求)、key(秘密鍵)を作る。
※ディレクトリはここではなくてはならないというわけではない。使用する証明書をconfファイルで指定する際のパスを適宜変えればいい。

cd /etc/pki/tls/private 

秘密鍵を作る

 openssl genrsa -des3 -out hoge.key 2048
オプション名 役割
genrsa 秘密鍵を生成
-des3 暗号化アルゴリズム
-out 書き出されるファイル
2048 2048bitで暗号化

CSRを作る

 openssl req -new -sha256 -key hoge.key -out hoge.csr
オプション名 役割
req 証明書要求
-new 新しい証明書要求を生成
-sha256 256bitで暗号化
-key で読み込む秘密鍵を指定
-out 作成される証明書のファイル名を指定

CSR作成コマンド実行後、秘密鍵のパスフレーズの入力を求められる。
その後、ディスティングイッシュネーム情報を求められる。

ディスティングイッシュネーム情報とは

CSRに含まれる、サイトやサイト運営団体に関わる情報

Country (国名)
例)JP
State(都道府県名)
例)Kanagawa
Locality(市区町村名)
例)Yokohama
Organizational Name(組織名)
例)example Inc.
Organizational Unit (部門名) ※「空のまま」でも大丈夫
例)(空)
Common Name(コモンネーム)
例)example.co.jp
Email Address(メールアドレス)
例)hoge@example.co.jp
以下2つは「空のまま」で大丈夫
任意:A challenge password (パスワードを設定するとApacheの起動時に毎回パスワードを求められる。)
任意:An optional company name(会社名の略称)

CSRの内容を確認する

ディスティングイッシュネーム情報の誤入力がないか確認する
https://sstool.cybertrust.ne.jp/support_tool/index02.php

認証局にログインし、更新申し込み

  • CSRの貼り付け

認証局から証明書、中間証明書を取得

  • 証明書(crt) ・・・ SSL証明書会社が証明書署名要求(csr)に情報を付加して秘密鍵で暗号化したもの。
  • 中間証明書(cer) ・・・ SSL証明書会社がセキュリティ強化、トラブル時の被害を最小限に抑えるために発行するもの。

サーバーに設置

ファイルを保存

「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」までも必要。

-----BEGIN CERTIFICATE----- // ココから
hogehoge...
-----END CERTIFICATE----- // ココまで

※ディレクトリはここではなくてはならないというわけではない。使用する証明書をconfファイルで指定する際のパスを適宜変えればいい。

vim /etc/pki/tls/certs/hoge.crt
vim /etc/pki/tls/certs/hoge.cer

ファイルに不備がないか確認する

Issuer :証明書署名要求(csr)に署名した者
Subject:証明されたいサーバの情報
Validity:証明書の有効期間

// 証明書
openssl x509 -noout -text -in /etc/pki/tls/certs/hoge.crt
// 中間証明書
openssl x509 -noout -text -in /etc/pki/tls/certs/hoge.cer

証明書と秘密鍵の整合性を確認する
実行後、「(stdin)=」の値に差異がないか

// 証明書
openssl x509 -noout -pubkey -in /etc/pki/tls/certs/hoge.crt | openssl sha1
// 秘密鍵
openssl rsa -pubout -in /etc/pki/tls/private/hoge.key | openssl sha1

ssl.confを修正

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

証明書、秘密鍵、中間証明書を追加

SSLCertificateFile /etc/pki/tls/certs/hoge.crt
SSLCertificateKeyFile /etc/pki/tls/private/hoge.key
SSLCertificateChainFile /etc/pki/tls/certs/hoge.cer

※注意点

1.デフォルトではssl.confを参照するように設定されているが、設定を変更していた場合、上記設定をしても無意味なので参照先をコマンドで確認する

httpd -S

(例)参照先がexample.co.jp.confに変更されている

httpd -S コマンド実行結果
*:443                  is a NameVirtualHost
         default server example.co.jp.localdomain (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost example.co.jp (/etc/httpd/conf.d/example.co.jp.conf:18)

2.Apache2.4.8以降はSSLCertificateChainFileが廃止されたので証明書と中間証明書を結合したcrtファイルを作成し、該当するconfファイルの「SSLCertificateFile」に設置する

hoge.crt
-----BEGIN CERTIFICATE----- // 証明書(crt)
hogehoge...
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- // 中間証明書(cer)
hogehoge...
-----END CERTIFICATE----- 
ssl.conf
SSLCertificateFile /etc/pki/tls/certs/hoge.crt

設定ファイルのチェックを行う

「syntax OK」とでればOK

※サーバーによってコマンドは異なる

service httpd configtest

サーバー再起動

※サーバーによってコマンドは異なる

service httpd graceful

ブラウザから証明書が更新されているか確認する

URLバー付近の鍵マーク→項目「証明書」→証明書を確認

反省

SSL証明書を更新する際にサーバー設定を変更しても反映されない場合は、作業しているサーバーがあっているか確認してみる。
サーバー移行しているかもしれない・・・

dig example.co.jp
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0