SSL証明書 更新時設定メモ

# SSLを設定します
## 前書き

春は出会いと別れの季節。
冬の様な寒さもまだありますが、そんな季節になってまいりました。

すでにSSLが設定されているサーバーにも更新の時期が。

今までSSLサーバー証明書には触れることなく生きてきましたが、
この直近で立て続けに更新作業をして、同じところで躓いたので
自分用の備忘録を公開してみる、というのが今回のスタンスになります。

SSL設定は他にもたくさんの記事がありますが、特に真新しいことはしていません。
あくまでも**自分用の備忘録**としての位置付けを**強調**しておきます。


## 環境 
### サーバー関連
``` Server version: Apache/2.2.15 (Unix) ```
サーバーにはターミナルからsshでログインしております。

``` openssl version ```
OpenSSLがインストールされている環境です。


### ディレクトリ・ファイル関連
ssl.conf / virtualHost設定ディレクトリ ``` /etc/httpd/conf.d/ ```
CSR・秘密鍵の保管ディレクトリ ``` /root/ssl/2017 ```

更新年のたびに年のディレクトリを増やしていく、
そんな管理方法であります。
上書きして失敗したら怖いですしね。


ssl.confファイル ``` ssl.conf ```
sslサイトのvirtualHost設定ファイル ``` virtualhost_ssl.conf ```

そのままです。特にひねりもありません。
シンプル is ベスト


サーバー証明要求ファイル ``` ssl.hoge.com.csr ```
秘密鍵ファイル ``` ssl.hoge.com.key ```
中間証明書ファイル ``` ssl.hoge.com.cer ```
サーバー証明書ファイル ``` ssl.hoge.com.crt ```

hoge.comで揃えてみました。
それぞれの内容はここでは触れませんので、どうぞお調べください。


## 実作業
### 秘密鍵を生成
``` openssl genrsa -des3 -out /root/ssl/2017/ssl.hoge.com.key 2048 ```
鍵長が2048以上の場合は2048まで入力するのがお約束です。
ここではパスフレーズを入れるパターンでやっていきます。


### サーバー証明要求ファイル(CSR)作成
``` openssl req -new -key /root/ssl/2017/ssl.hoge.com.key -out  /root/ssl/2017/ssl.hoge.com.csr ```

たった今生成した秘密鍵を使ってCSRファイルを生成します。
改行されて表示されているかもしれませんが、改行はしません。

この後、根掘り葉掘り聞かれますが、誠実に回答してください。

国名 ``` Country Name : JP ``` 
都道府県 ``` State or Province Name : Tokyo ``` 
市区町村 ``` Locality Name : Shibuya-ku ``` 
組織名(会社名) ``` Organization Name : Hoge.co.ltd, ``` 
部署名(ない場合はハイフン) ``` Organization Unit Name : Sales / - ``` 
Webサーバー ``` Common Name : *.hoge.com ``` 
このあとは入力不要です。


### サーバー証明書申し込み
サーバー証明書発行サイトで行います。
先ほど生成されたCSRの内容を求められるので、
**最初のハイフンから最後のハイフンまで**きっちりコピーして入力フォームに貼り付けます。
もちろん、文末の改行は不要です。

他の内容は、そのサイトのQ&Aを確認してください。


### 中間証明書
申し込み時にサイトから中間証明書がメールで送信されます。
ない場合はサイトに転がっているので、環境にあったものを見つけてください。

``` vi /root/ssl/2017/ssl.hoge.com.cer ```

viである必要はありませんが、**最初のハイフンから最後のハイフンまで**きっちりコピーしてファイルに貼り付けます。
ここでも文末の改行は不要です。


### サーバー証明書
サーバー証明書発行サイトで確認できるかと思います。

``` vi /root/ssl/2017/ssl.hoge.com.crt ```
viである必要はありませんが、**最初のハイフンから最後のハイフンまで**きっちりコピーしてファイルに貼り付けます。
ここでも文末の改行は不要です。大事なことなので3回言いました。


### ssl.conf修正
ディレクトリを変えているので、ssl.confの修正が必須となります。

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

エディタを開き、以下の箇所を書き換えます。


``` SSLCertificateFile /root/ssl/2017/ssl.hoge.com.crt ```
``` SSLCertificateKeyFile /root/ssl/2017/ssl.hoge.com.key ```
``` SSLCertificateChainFile /root/ssl/2017/ssl.hoge.com.cer ```

それぞれ、サーバー証明書、秘密鍵、中間証明書を正しいパスで編集します。


### virtualhost修正
必要に応じてvirtualhostも書き換えます。

``` vi /etc/httpd/conf.d/virtualhost_ssl.conf ```

ssl.confと同じ様にエディタを開き、以下の箇所を書き換えます。


``` SSLCertificateFile /root/ssl/2017/ssl.hoge.com.crt ```
``` SSLCertificateKeyFile /root/ssl/2017/ssl.hoge.com.key ```
``` SSLCertificateChainFile /root/ssl/2017/ssl.hoge.com.cer ```

それぞれ、サーバー証明書、秘密鍵、中間証明書を正しいパスで編集します。



### 証明書と秘密鍵が一致しているかチェック
このままapacheを再起動しても良いですが、止まってしまったら大変！
ということで、それぞれ一致しているかを確認してみましょう。

サーバー証明書申し込み
``` openssl req -noout -modulus -in /root/ssl/2017/ssl.hoge.com.csr ```

秘密鍵
``` openssl rsa -noout -modulus -in /root/ssl/2017/ssl.hoge.com.key ```

サーバー証明書
``` openssl x509 -noout -modulus -in /root/ssl/2017/ssl.hoge.com.crt ```

もしエラーが出る様でしたら、まずは各ファイルを見てみましょう。
自分はサーバー証明書ファイルのコピーができておらず、ここで何度も涙を見ました。。。


*** サーバー再起動
エラーが出なかった場合は晴れてapacheを再起動しましょう。

``` service httpd restart ```

```Stopping httpd:                                            [  OK  ]```

```Starting httpd:                                            [  OK  ]```

このフレーズが出たらOKです。
ホッと一息つけますね。