さくらインターネットRapidSSL申込みからApache設定まで

## 概要
試しに clock-up.jp への SSL 設定を行ってみた。

## 流れ
ざっくり以下のような流れ。

1. 秘密鍵作成 … 自分のサーバで行う
2. CSR作成 … 自分のサーバで行う。ここに署名情報を含める。
3. 中間CA証明書取得 … 認証局サイトから取得
4. サーバ証明書取得 … プロバイダを介して認証局から取得
    - 認証局に(2)のCSRを送る必要がある
5. 秘密鍵・中間CA証明書・サーバ証明書をApacheに設定

## 手元のモジュール確認
```
$ rpm -q httpd
httpd-2.2.15-47.el6.centos.x86_64

$ rpm -q mod_ssl
mod_ssl-2.2.15-47.el6.centos.x86_64

$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
```

モジュールが無ければ yum 等でインストール。

```
# yum -y install httpd
# yum -y install mod_ssl
# yum -y install openssl
```


## 秘密鍵生成

```
# cd /etc/httpd/conf
# mkdir ssl.key
# chmod 700 ssl.key
# cd ssl.key
# openssl genrsa -des3 -out ./ssl.key/clock-up.jp_201511.key 2048
…
Enter pass phrase for clock-up.jp.key:
Verifying - Enter pass phrase for clock-up.jp.key:

# ls -l ssl.key
-rw-r--r-- 1 root root 1743 Nov 15 02:13 clock-up.jp_201511.key
```

あとあとパスフレーズ入力するのがめんどくさくなってきたら以下コマンドでパスフレーズを外しておく。

```
# openssl rsa -in ./ssl.key/clock-up.jp_201511.key -out ./ssl.key/clock-up.jp_201511.key
```

## CSR生成
```
# mkdir ssl.csr
# chmod 700 ssl.csr
# openssl req -new -key ./ssl.key/clock-up.jp_201511.key -out ./ssl.csr/clock-up.jp_201511.csr
Enter pass phrase for ./ssl.key/clock-up.jp_201511.key: ← 入力
…
Country Name (2 letter code) [XX]:JP ← 入力
State or Province Name (full name) []:Tokyo ← 入力
Locality Name (eg, city) [Default City]:Shinjuku-ku ← 入力
Organization Name (eg, company) [Default Company Ltd]:clock-up.jp ← 入力
Organizational Unit Name (eg, section) []: ← 空
Common Name (eg, your name or your server's hostname) []:clock-up.jp ← 入力
Email Address []:kobake@users.sourceforge.net ← 入力

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

# ls -l ssl.csr/
-rw-r--r-- 1 root root 1054 Nov 15 03:17 clock-up.jp_201511.csr

# cat ssl.csr/clock-up.jp_201511.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIC0jCCAboCAQAwgYwxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzEUMBIG
…
Pv+6Tt+0
-----END CERTIFICATE REQUEST-----
```

## CSR内容確認
```
# openssl req -text -noout -in ssl.csr/clock-up.jp_201511.csr 
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP, ST=Tokyo, L=Shinjuku-ku, O=clock-up.jp, CN=clock-up.jp/emailAddress=kobake@users.sourceforge.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
…
```

## さくらインターネットにてSSL申込 (CSR登録)
![1.png](https://qiita-image-store.s3.amazonaws.com/0/25555/381a85f4-7e3a-9f5c-9ece-87767b40a060.png)

![2.png](https://qiita-image-store.s3.amazonaws.com/0/25555/62858de8-b267-3d61-9d60-ffc6b2751ebe.png)

![3.png](https://qiita-image-store.s3.amazonaws.com/0/25555/5d45c19a-3d58-3db5-ddc3-c82b4d95a3ca.png)

![4.png](https://qiita-image-store.s3.amazonaws.com/0/25555/141ebf9c-391b-cec1-1359-fd957e0945a9.png)

![5.png](https://qiita-image-store.s3.amazonaws.com/0/25555/a24f5ecc-4053-d82f-b915-6dc9f4acfdde.png)

![6.png](https://qiita-image-store.s3.amazonaws.com/0/25555/fe307335-ea04-5236-0062-76a624db025c.png)

clock-up.jp_201511.csr の内容をまるまるコピペ。

![7.png](https://qiita-image-store.s3.amazonaws.com/0/25555/94465427-8413-1541-f12a-12a4430d1ceb.png)

表示される内容にうち、**特にコモンネームが間違ってないことを確認**。

![8.png](https://qiita-image-store.s3.amazonaws.com/0/25555/a40aeb9b-49d8-3ff2-7c5a-88349bed724a.png)

![9.png](https://qiita-image-store.s3.amazonaws.com/0/25555/f99d9688-445b-8df7-21b5-bd3f72238d81.png)

とりあえずこれで申込み完了。しばらくするとさくらインターネットからのメールが来る。

## CSR登録後に来るメール：認証ファイルの発行
申込みから2分くらいで来るメール。
![auth1.png](https://qiita-image-store.s3.amazonaws.com/0/25555/5ae69ba9-8d55-47ec-cbb4-bc2920e9607e.png)

申込みから10分くらいで来るメール。
![auth2.png](https://qiita-image-store.s3.amazonaws.com/0/25555/d078523d-8861-e24d-552b-dfcc86d95962.png)

会員メニューから認証ファイル (htmファイル) が入手できるようになっている。
![auth3.png](https://qiita-image-store.s3.amazonaws.com/0/25555/469ada1e-87cc-84fa-e01a-8ae88075ce88.png)


入手した認証ファイル (htmファイル) を
http://clock-up.jp/*.htm としてアップロードする。
しばらくすると自動で認証局のボット的なものからこのファイルへのアクセスがあり、問題なければサーバ証明書が送られてくる。この時点で認証ファイルはもう不要なので削除してOK。

## 認証後に来るメール：サーバ証明書の発行
認証ファイルを設置してから15分くらいで来た。
![cert1.png](https://qiita-image-store.s3.amazonaws.com/0/25555/639bf491-70bf-fcaa-9218-ccd9a26b0c97.png)

会員メニューからサーバ証明書 (certファイル) を入手できるようになっている。
![cert2.png](https://qiita-image-store.s3.amazonaws.com/0/25555/b4de1d89-7821-4965-637d-1261840abeef.png)

サーバ証明書 (certファイル) の中身はこんな感じ。
![cert3.png](https://qiita-image-store.s3.amazonaws.com/0/25555/c1f93f3d-5dc2-22a9-1540-32008b591b01.png)

これの内容をまるまるコピーして
```/etc/httpd/conf/ssl.crt/server.crt```
として保存。

## RapidSSL中間CA証明書を取得
https://www.geotrust.co.jp/resources/rapidssl/repository/intermediate_sha2.html

![inca.png](https://qiita-image-store.s3.amazonaws.com/0/25555/95f8e9c2-8049-957f-8ed3-f520355a4713.png)

赤枠内をまるまるコピーして、
```/etc/httpd/conf/ssl.crt/inca.crt```
として保存。

## この時点で揃ったファイル
* /etc/httpd/conf/ssl.key/clock-up.jp_201511.key … 秘密鍵(自分で作った)
* /etc/httpd/conf/ssl.csr/clock-up.jp_201511.csr … CSR(自分で作った)
* /etc/httpd/conf/ssl.crt/inca.crt … 中間CA証明書(RapidSSLサイトから取得)
* /etc/httpd/conf/ssl.crt/server.crt … サーバ証明書(さくらインターネット管理画面から取得)

## Apache設定
/etc/httpd/conf.d/ssl.conf を編集

```
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443

SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/random  512
#SSLRandomSeed connect file:/dev/random  512
#SSLRandomSeed connect file:/dev/urandom 512
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec

<VirtualHost *:443>
  DocumentRoot "/home/www/www.clock-up.jp/public_html"
  ServerName clock-up.jp:443

  SSLEngine on
  SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/clock-up.jp_201511.key
  SSLCertificateChainFile /etc/httpd/conf/ssl.crt/inca.crt
  SSLCertificateFile      /etc/httpd/conf/ssl.crt/server.crt

  <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>

  <Directory "/home/www/www.clock-up.jp/public_html">
    SSLOptions +StdEnvVars
  </Directory>
</VirtualHost>
```

## Apache再起動
```
# service httpd restart
```

これにて完。