さくらVPSでApache+SSL環境の構築（CentOS6.5+Apache+RapidSSL）

参考
[さくらのVPSにRapidSSLを導入する](http://toshis0307.hatenablog.jp/entry/2015/11/01/235041)
[[さくらのSSL]nginxにRapidSSLの証明書をインストールした](http://nullpopopo.blogcube.info/2015/08/sakurassl-rapidssl.html)


#概要

|必要なもの |該当ふぃある   |説明 | 
|------|---|---|
|秘密鍵 | server.key | |
|SSL証明書 |server.crt |  |
|中間証明書 | rapidssl-chain.crt|  |

#Apache,SSLインストール

##Apacheインストール

```
yum install httpd
```

##mod_sslのインストール

```
yum install mod_ssl
```

#CSR作成
サーバ証明書を発行するためにCSR（署名要求）を作る。
CSRは秘密鍵から作る。

##秘密鍵作成

```
# cd /etc/pki/tls/certs/
# openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...............................+++
.................................................
.................................................
................+++
e is 65537 (0x10001)
Enter pass phrase for server.key: （←パスフレーズを入力）
Verifying - Enter pass phrase for server.key: （←パスフレーズを再入力）
```

##CSR作成
設定する項目のうちでドメイン名は合っている必要がある。
さくらVPSのデフォルトのドメインは使えないので、独自ドメインを取得する必要がある。

```
# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.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) :Osaka （←都道府県）
Locality Name (eg, city) [Default City]:Osaka-shi （←市区町村）
Organization Name (eg, company) [Default Company Ltd]: example.info （←組織名）
※個人運営なのでドメイン名にしています(何でも良い)
Organizational Unit Name (eg, section) : （←部署名）
Common Name (eg, your name or your server's hostname) :www.example.info （←ドメイン名）
Email Address :webmaster@example.info （←メールアドレス）

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

CSRの内容を確認する。Subject: の行が合っていることと、Public-Key: の行が 2048 bitであることが確認する。

```
# openssl req -text -noout -in server.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP, ST=Osaka, L=Osaka-shi, O=example.info, CN=www.example.info/emailAddress=webmaster@example.info
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    (略)
                Exponent: 65537 (0x10001)
        Attributes:
            (略)
    Signature Algorithm: sha1WithRSAEncryption
         (略)
```

#SSL証明書と中間証明書の申請・購入とサーバへの設定
※以降は、さくらでラピッドSSLを購入する例です。

##SSL証明書の購入

[さくらのSSL](https://ssl.sakura.ad.jp/)からラピッドSSLを購入する。
購入する際にCSRの入力を求められるので、先ほど作成したserver.csrの中身をコピペする。

BEGIN行とEND行も貼り付けること。

```
 -----BEGIN CERTIFICATE-----
 (略)
 -----END CERTIFICATE-----
```

メールが届けば購入完了。

##認証作業
認証ファイルをDLして、Webサーバへアップロードする。
1分おきに認証ファイルへリクエストがあるので、認証ファイルが返されることで認証が完了する。

###認証ファイルDL
[会員メニュー ](https://secure.sakura.ad.jp/menu/)より、「契約情報」→「契約サービスの確認」で、「SSL ラピッドSSL」の「サーバ証明書」を開く。
「認証ファイルDL」をクリックして、認証ファイルをダウンロードする。

###Webサーバへアップロード
Webサーバのルート(/var/www/html)へDLした認証ファイルをそのまま配置する。
1分置きにルートの認証ファイルへリクエストがあり、認証ファイルが返されることで認証が完了する。
リクエストはアクセスログで確認可能。


##サーバ証明書ダウンロードして、サーバへ
先ほど「認証ファイルDL」だった箇所が「サーバ証明書DL」になっているのでDLする。

テキストでサーバ証明書開いて、サーバに張り付ける。

```
# vim /etc/pki/tls/certs/server.crt
 -----BEGIN CERTIFICATE-----
 (略)
 -----END CERTIFICATE-----
```

また、Apache再起動の度に確認が来るためパスフレーズ応答を削除する。

```
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: (←秘密鍵のパスフレーズ入力)
writing RSA key
```

##中間CA証明書の取得して、サーバへ

「ジオトラスト SSLサーバ証明書発行のお知らせ」というメールが届くので、中段の「ジオトラスト　ラピッドSSL」を開く。

SHA-2であることを確認して、サーバに貼り付ける。

```
# vim /etc/pki/tls/certs/rapidssl-chain.crt
 -----BEGIN CERTIFICATE-----
 (略)
 -----END CERTIFICATE-----
```


#設定変更/確認

##Apache設定変更

```
# vim /etc/httpd/conf.d/ssl.conf
～以下を編集～
DocumentRoot "/var/www/html"
ServerName www.example.info:443（←自分の環境のドメイン名を書く）
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/server.key
SSLCertificateChainFile /etc/pki/tls/certs/rapidssl-chain.crt
```

##Apache再起動

```
# service httpd configtest
Syntax OK
# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
```

##確認

ブラウザでhttpsでアクセスして確認する。