LoginSignup
10

More than 5 years have passed since last update.

[*SSL*] Apache2.4にてSSL化を行う

Posted at

はじめに

SSL設定に挑戦。
以前もやったが上手くいかなかったのでリトライ。
今回は上手くいった。

OS: CentOS7 (さくらVPS)
Apache: 2.4系
SSL証明書: さくらインターネットの一番安いやつ

方法

秘密鍵の生成

$ openssl genrsa -des3 -out private.key 2048
# Generating RSA private key, 2048 bit long modulus
# ...........................+++
# ..............................................................................................# ................................+++
# e is 65537 (0x10001)
# Enter pass phrase for private.key: *******************(ここに入力したものを絶対わすれちゃダメ)
# Verifying - Enter pass phrase for private.key: *******************

CSRの生成

$ openssl req -new -key private.key -out server.csr
# Enter pass phrase for private.key: *******************(秘密鍵のパスフレーズ)
# You are about to be asked to enter information that will be incorporated
# into your certificate request.
# What you are about to enter is what is called a Distinguished Name or a DN.
# There are quite a few fields but you can leave some blank
# For some fields there will be a default value,
# If you enter '.', the field will be left blank.
# -----
# Country Name (2 letter code) [XX]:JP
# State or Province Name (full name) []:Tokyo
# Locality Name (eg, city) [Default City]:Kita-Ku
# Organization Name (eg, company) [Default Company Ltd]:組織名を何か
# Organizational Unit Name (eg, section) []:(任意)
# Common Name (eg, your name or your server's hostname) []:http://example.comなら「example.com」
# Email Address []:(未入力)

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

できたファイル

$ -rw-rw-r--   1 sample sample 1743  4月 28 08:54 private.key
$ -rw-rw-r--   1 sample sample  980  4月 28 08:58 server.csr

CSRの中身

$ cat server.csr
# -----BEGIN CERTIFICATE REQUEST-----
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# -----END CERTIFICATE REQUEST-----

SSL証明書の申し込み

さくらで取得。
スクリーンショット 2018-04-28 9.09.10.png

しばらくするとメールで準備できたとメールが来るので
認証ファイルDLを押してtxtファイルをダウンロードする。
スクリーンショット 2018-04-28 9.59.24.png

サーバ証明書の設定

$ cd [ドキュメントルート]
$ sudo mkdir -p .well-known/pki-validation
# このディレクトリ以下にダウンロードしたファイルを入れる

アクセス制限をかけてると認証できないらしいので、ベーシック認証などを外す必要がある。
暫く待つと、サーバ証明書DLが現れる。

スクリーンショット 2018-04-28 10.46.56.png

ダウンロードしたサーバ証明書をサーバーに転送する。

$ scp server.crt [ユーザー名]@[IPアドレス]:[ディレクトリ]

中間CA証明書の設定

ダウンロードしたサーバ証明書に中間CA証明書情報を記載する必要がある。
今回取得したSSL証明書の中間証明書はJPRSから取得する。
中間証明書は取得したSSL証明書によって違うので上記にすればよいというわけではない。
server.crtを開き、以下のように設定する。

-----BEGIN CERTIFICATE-----
(サーバ証明書)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----  ⇐ ここから下を追加する
(中間証明書)
-----END CERTIFICATE-----

Apacheの設定

バーチャルホストの設定

<VirtualHost *:443>
  (省略)
  SSLEngine on
  SSLCertificateFile server.crt (ダウンロードしたサーバ証明書)
  SSLCertificateKeyFile private.keyCSR生成時の秘密鍵)
  (省略)
</VirtualHost>

SSLモジュールの設定

$ sudo yum install mod_ssl
$ sudo vim /etc/httpd/conf.modules.d/00-ssl.conf
# 以下を記載する
# LoadModule ssl_module modules/mod_ssl.so
$ sudo systemctl restart httpd

443ポートの開放

$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

参考

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
10