CentOS7 + Apache + mod_ssl 証明書設定


SSL証明書の更新は数年に一度で、手順があやふやになるので、メモをしておきます。

もちろんmod_sslありきです。

```
# yum -y install mod_ssl
```

##参考サイト
http://newsbit.jp/blog/index.php?itemid=116
https://centossrv.com/

##英語表記（帝国データバンクより）
CHUO SYSTEM K.K.
TOKYO
SHINJUKU-KU
SHINJUKU SANE BLDG. 7F., 1-2-17, OKUBO

##証明書購入先
https://www.ssl-store.jp/
FujiSSL (2年) 

##諸々設定情報
コモンネーム：www.chuo-system.co.jp
confまでのパス：/etc/httpd/conf/
秘密鍵ファイル名：xxxx.key
秘密鍵ファイル名(パスフレーズ)：xxxx.withpass.key
CSRファイル名：xxxx.csr
証明書ファイル：xxxx.crt
中間証明書ファイル名：xxxx.cst
CSRディレクトリ：/etc/httpd/conf/ssl.csr/
証明書ディレクトリ：/etc/httpd/conf/ssl.crt/
パスワード：

##証明書作成他
CSR用ディレクトリを作成

```
# mkdir /etc/httpd/conf/ssl.csr/
```

CSR用ディレクトリに移動

```
# cd /etc/httpd/conf/ssl.csr
```

キーペア（秘密鍵）の作成（2048bitの秘密鍵）

```
# openssl genrsa -des3 2048 > xxxx.key

Generating RSA private key, 2048 bit long modulus
.......+++
...........................................................+++
e is 65537 (0x10001)
Enter pass phrase:（パスワード入力）
Verifying - Enter pass phrase:（パスワード入力）
```

キーペア（秘密鍵）を元にしたCSRの作成

```
# openssl req -new -key xxxx.key -out xxxx.csr -sha1

Enter pass phrase for xxxx.key:（パスワード入力）

Country Name (2 letter code) [GB]:JP（国名）
State or Province Name (full name) [Berkshire]:Tokyo（都道府県名）
Locality Name (eg, city) [Newbury]:Shinjuku-ku（市区町村名）
Organization Name (eg, company) [My Company Ltd]:CHUO SYSTEM K.K.（会社名）
Organizational Unit Name (eg, section) []:（空エンター）
Common Name (eg, your name or your server's hostname) []:www.chuo-system.co.jp
Email Address []:（空エンター）

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:（空エンター）
An optional company name []:（空エンター）
```

キーペア（秘密鍵）にパスワードを埋め込む

```
# openssl rsa < xxxx.key > xxxx.withpass.key

Enter pass phrase:（パスワード入力）
writing RSA key
```

以下が出来ているはず（確認）

```
# ls

xxxx.csr
xxxx.key
xxxx.withpass.key
```

CSRを確認

```
# cat xxxx.csr

-----BEGIN CERTIFICATE REQUEST-----
　・
　・
　・
　・
-----END CERTIFICATE REQUEST-----
```

↑を先方に渡す（Webサイト上）

##先方からメールで送られてきたサーバー証明書をインストール

証明書用ディレクトリを作成

```
# mkdir /etc/httpd/conf/ssl.crt/
```

証明書用ディレクトリに移動

```
# cd /etc/httpd/conf/ssl.crt/
```

証明書ファイルを作成し、証明書を貼り付け

```
# vi xxxxcrt

############################################################
SSLサーバ証明書は以下の通りです
(-----BEGIN CERTIFICATE-----)から(-----END CERTIFICATE-----)
までがお客様のSSLサーバ証明書です
############################################################
```

中間証明書（INTERMEDIATE CA）ファイルを作成し、証明書を貼り付け
なぜか２つあるので両方貼り付け

```
# vi xxxx.cst

############################################################
中間CA証明書は以下の通りです。
(-----BEGIN CERTIFICATE-----)から(-----END CERTIFICATE-----)
までが中間CA証明書です。
############################################################
```

##ssl.confの設定

```
# vi /etc/httpd/conf.d/ssl.conf

# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt　←　デフォルト（コメントアウト）
SSLCertificateFile /etc/httpd/conf/ssl.crt/xxxx.crt　←　追加（初期）や置換（更新）

# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key　←　デフォルト（コメントアウト）
SSLCertificateKeyFile /etc/httpd/conf/ssl.csr/xxxx.withpass.key　←　追加（初期）や置換（更新）

# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt　←　デフォルト（コメントアウト）
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/xxxx.cst　←　追加（初期）や置換（更新）
```

##初期設定時には

```
# vi /etc/httpd/conf.d/ssl.conf

#  General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html"　←　#を削除(コメント解除)
↓
DocumentRoot "/var/www/html"
```

###POODLE SSLv3.0 脆弱性問題対処

```
# vi /etc/httpd/conf.d/ssl.conf

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2
↓
SSLProtocol all -SSLv2 -SSLv3　←　SSLv2、SSLv3を無効化する
```

###ディレクトリ所有者変更等

```
# chown -R root:root /etc/httpd/conf/ssl.csr/

# chown -R root:root /etc/httpd/conf/ssl.crt/

# chmod -R 400 /etc/httpd/conf/ssl.csr/

# chmod -R 400 /etc/httpd/conf/ssl.crt/
```

##Apache再起動

```
# systemctl restart httpd
```