ApacheにSSL証明書を設定する

Pocket

ApacheにSSL証明書を設定する覚書。

証明書取得の流れ

  1. サーバーで秘密鍵・公開鍵を作成(秘密鍵の拡張子は.key.pemにする場合が多い)
  2. ↑に作成した鍵に対してCSR(証明書署名要求)を作成(拡張地は.csr.pemにする場合が多い)
  3. 認証局(CA:Certificate Authority)にCSR(証明書署名要求)を送りデジタル署名を受ける
  4. 認証局から証明書(サーバー公開鍵を認証局がデジタル署名したファイル)を受け取る(拡張子は.crt.pemが多い)

※ 中間認証局が証明書を発行する場合は、ルート認証局が中間認証局を認証した中間証明書も必要。
※ 中間証明書と証明書をあわせた証明書が発行される場合もある。

前提

  • Ubuntu 18.04
  • Server version: Apache/2.4.29 (Ubuntu)

関連ファイル

以下ディレクトリにファイルが存在するとして進める。

  • サーバ秘密鍵: /etc/ssl/example.com/privkey.pem
  • 中間証明書:/etc/ssl/example.com//chain.pem
  • 証明書:/etc/ssl/example.com/cert.pem

Apacheの設定

SSL関連ディレクティブ

  • SSLEngine
  • SSLCertificateKeyFile サーバ秘密鍵
  • SSLCertificateChainFile 中間証明書
  • SSLCertificateFile 証明書

confファルを設定

exsample.com-ssl.confをSSL用の設定ファイルとする。

<VirtualHost *:443>
        ServerAdmin webmaster@example.com
        ServerName example.com
        DocumentRoot /var/www/html/example.com/public

        ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
        CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined

        SSLEngine on

        SSLCertificateKeyFile /etc/ssl/example.com/privkey.pem
        SSLCertificateChainFile /etc/ssl/example.com//chain.pem
        SSLCertificateFile    /etc/ssl/ecample.com/cert.pem
</VirtualHost>

HTTPSを有効化

exsample.com-ssl.confをSSL用の設定ファイルとする。

$ cd /etc/apache2/sites-availables
$ a2ensite example.com-ssl.conf

備考

デジタル署名は大雑把に言えば、サーバー公開鍵を認証局の秘密鍵でデジタル署名する。
サーバにアクセスするクライアントは認証局の公開鍵を使って証明書の正当性を確認する。

認証局の公開鍵はブラウザにデフォルトで登録されている場合もあれば認証局から取得する場合もある。

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。