RapidSSLなどで購入したSSL証明書をALB(ELB)に設置するまで

# はじめに
会社で購入したSSL証明書をALBに設置する機会がありましたのでまとめます
[SSL証明書)の仕組み](https://milestone-of-se.nesuke.com/sv-advanced/digicert/digital-certification-summary/)についてはこちら

# ドメインを購入
お名前ドットコムなどで購入できます

# CSRを作成
ssh接続したEC2サーバー内で、以下のコマンドでCSRを作成します

```terminal

$ sudo su
# cd /usr/local/etc
# mkdir ca
# chmod 600 ca
# cd /usr/local/etc/ca

# 秘密鍵の作成
# openssl genrsa -out ca.key -des3 2048
.........................................................................+++
...................................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:(ca.keyのパスフレーズ)
Verifying - Enter pass phrase for server.key:(ca.keyのパスフレーズ)

#　秘密鍵のパスフレーズを削除します。
# openssl rsa -in ca.key -out ca.key 
Enter pass phrase for ca.key:(ca.keyのパスフレーズ)
writing RSA key
# openssl rsa -in ca.key -out ca.key 
writing RSA key
↑これがでたら、フレーズを削除できたということです。

# CSR作成
# openssl req -new -key ca.key > ca.csr

Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:都道府県を記載
Locality Name (eg, city) [Default City]:市を記載
Organization Name (eg, company) [Default Company Ltd]:会社名を記載
Organizational Unit Name (eg, section) []:部署を記載（省略可）
Common Name (eg, your name or your server's hostname) []:ドメイン名（購入したドメイン）

以降の他の項目は、無記入で可
Email Address []:（空白可、エンターのみ入力）
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:（空白可、エンターのみ入力）
An optional company name []:（空白可、エンターのみ入力）
```
### 会社名も全て、英語で入力してください！
会社名を日本語にすると、SSL証明書を購入する際、CSRの中身を貼り付けるとエラーになります。

### 秘密鍵のパスフレーズ削除しましょう。
秘密鍵のパスフレーズを削除する理由は、パスフレーズで暗号化されいる場合、ACMにインポートできないためです。
`writing RSA key`が出ると、削除できたということです。

https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/troubleshoot-import.html

### CSR作成の注意点
[東京商工リサーチ](https://duns-number-jp.tsr-net.co.jp/search/jpn/find_jpn.asp)で、会社名を検索し、記載の住所を確認のうえ正確に入力してください。

CSRの内容はSSL申込時に必要なため、コピーします

```
$ cat ca.csr
-----BEGIN CERTIFICATE REQUEST-----
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-----END CERTIFICATE REQUEST-----
```

# さくらサイトなどでSSL証明書の購入
CSRの内容が必要です。サイトの指示にしたがい申し込みます。

# EC2サーバー側の認証
SSL証明書の申込みが完了後、サーバーが存在するか（厳密にはドメインが存在するか）確認されるため、`認証ファイル`をサーバーに設置するよう指示されます。
そのため、ローカルからEC2に`scp`コマンドでアップします

```terminal
#ローカル
$ scp [オプション] [鍵].pem 認証ファイル　ユーザ名@サーバのホスト名(or IPアドレス):保存先パス

$ scp -p -i　[鍵].pem hoge.html　ec2-user@xxx.xxx.xxx.xxx:/指示されたフルパスを指定
```

#サーバー証明書と中間証明書をうけとる
EC2サーバー側の認証されると、サーバー証明書と中間証明書がもらえます。

# AWS Certificate Managerにインポート

AWSのACMコンソールに移動します。
`Import a certificate`をクリックします。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/e70e6e25-b312-a5b6-33b7-884c9b20c783.png">

`Certificate body`にサーバ証明書の中身をペーストします

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

`Certificate private key`には、先程サーバー内で作成したサーバ証明書の秘密鍵(ca.key)の中身をペーストします。

```
-----BEGIN RSA PRIVATE KEY-----
(省略)
-----END RSA PRIVATE KEY-----
```


`Certificate chain`には、中間証明書の中身をペーストします。

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


<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/e440eafe-e814-0342-069e-bcd6f35a47d6.png">


「Review and import」→「import」を押して、証明書作成できます。
これをALBに設置すると完了です。


# 参考

https://milestone-of-se.nesuke.com/sv-advanced/digicert/digital-certification-summary/



[さくらVPSにSSL証明書を導入しHTTPS通信の構築](https://qiita.com/yoshizaki_91/items/e6f39a5bfb99900b44b2)

[AWS Certificate Managerでオレオレ証明書をインポートする](https://qiita.com/Raccoon-san/items/f342c4f41c8d6ce465cb)