【Linux + Apache + Openssl】SSLサーバ証明書インストール(更新)

スポンサーリンク

Webサーバにてssl通信する場合は然るべき機関からサーバ証明書を発行してもらい、Webサーバにインストールする必要がある。ここではLinux+Apache+OpenSSLで構成されたWebサーバで証明書をインストールする手順となる。更新する場合も同様の手順で、大まかな流れは下記となる。

  1. 秘密鍵の生成
  2. 秘密鍵を元にCSRを作成
  3. 証明書発行期間にCSRを使って発行手続き
  4. サーバで証明書の置き換え

秘密鍵の生成

CSRの発行には秘密鍵が必要となる。サーバ上で秘密鍵を生成する。その際、パスワードを聞かれるので任意のパスワードを入力する。このパスワードはCSR申請時などで使うので控えておく。なお、ここでは証明書の置き場は/etc/pki/tls/ssl.key/としている。

# openssl genrsa -des3 -out /etc/pki/tls/tec-memo.key 2048
Enter PEM pass phrase:★任意のパスワード
Verifying - Enter PEM pass phrase:★任意のパスワード再入力

/etc/pki/tls/ssl.key/ 配下に tec-memo.key というファイル作成される。

CSRファイル作成

CSR(Certificate Signing Request)ファイルを作成する。CSRファイルを元に証明書を発行する機関は証明書を発行することになるので、必ず必要となる。

# openssl req -new -key  /etc/pki/tls/ssl.key/tec-memo.key -out /etc/pki/tls/ssl.key/tec-memo.csr
(中略)
Country Name (2 letter code) [XX]:JP(国名)
State or Province Name (full name) []:Tokyo (都道府県)
Locality Name (eg, city) [Default City]:Minato-ku (市町村)
Organization Name (eg, company) [Default Company Ltd]:tec-memo Ltd(組織名称)
Organizational Unit Name (eg, section) []: System(部署名)
Common Name (eg, your name or your server's hostname) []:tec-memo.com(サーバ名)
Email Address []:メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

証明書発行手続き

発行機関によって手続き方法が異なる。手続きの際にCSRが必要となるので各機関の手順に従ってCSRファイルを送付することとなる。

サーバ証明書の置き換え

環境によってパスが異なる場合があるが、デフォルトだと /etc/httpd/conf.d/ssl.conf を書き換える。入手した証明書ファイルをWebサーバに配置し、パスを書き換える。中間証明書は必要に応じて、証明書発行機関から入手して配置し、パスを書き換える。

#証明書
SSLCertificateFile /etc/pki/tls/ssl.key/tec-memo.cert
#秘密鍵ファイル
SSLCertificateKeyFile /etc/pki/tls/ssl.key/tec-memo.key
#中間証明書
SSLCertificateChainFile /etc/pki/tls/ssl.key/inca.cert

証明書の正常性を確認する。Syntax OK とでれば証明書のパス違いや鍵ファイルが読めるかなどチェックできる。再起動前にチェック推奨

# apachectl configtest
Syntax OK

反映のためにApacheの再起動する。

# systemctl restart httpd

Apacheを起動するたびにパスワード入力が必要になる場合、秘密鍵からパスフレーズを削除する。

# openssl rsa -in tec-memokey -out tec-memo.key

削除したパスフレーズを戻すこともできる。(削除したパスフレーズと同じものを設定できるのではなく、再度パスワードで上書きすることになる。)

# openssl rsa -aes256 -in tec-memo.key -out tec-memo.key.enc
writing RSA key
Enter pass phrase: <パスフレーズを入力>
Verifying – Enter pass phrase:<パスフレーズを入力>

(おまけ)CSRと秘密鍵の整合性を確認する

秘密鍵(KEY)、CSR、証明書(CRT)の整合性を確認するには、RSA 鍵に共通する modulus(モジュラス)を比較する。modulus が一致していれば、同一の鍵ペアから生成されていることが確認できる。

openssl rsa -noout -modulus -in tec-memo.key | openssl md5
openssl req -noout -modulus -in tec-memo.csr | openssl md5

表示される MD5 値が同じなら一致している。

コメント

タイトルとURLをコピーしました