SSL設定 備忘録

## 認証レベル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637823/706c2303-5574-d274-7685-329f45fcdd23.png)

https://style.nikkei.com/article/DGXMZO71600000W1A500C2000001?page=3

## OpenSSl
opensslは通常、ほとんどのLinuxディストリビューションにデフォルトでインストールされている。

## versionの確認
```
openssl version
ssl -V
```

## ディレクトリ作成
```
sudo mkdir /etc/apache2/ssl.key
sudo mkdir /etc/apache2/ssl.crt
```
|補足|説明|備考|
|----|----|----|
|mkdir /etc/apache2/ssl.key|ssl.keyという名前のフォルダができる。<br>ファイルができるわけではない。||

## 秘密鍵の作成

```
sudo openssl genrsa -out /etc/apache2/ssl.key/server.key 2048
```
https://www.youtube.com/watch?v=Ob5hvd8iAbU&t=703s

|補足|説明|備考|
|----|----|----|
|genrsa|暗号アルゴリズムRSA||
|-des3|秘密鍵の暗号化トリプルDES|サーバーを再起動するたびに聞かれるため今回は使わない|
|server.key|.keyという名称が多い||
|2048|鍵長。<br>1024だと認証局から受け付けてもらえない。||

### 権限変更
```
sudo chmod 400 /etc/apache2/ssl.key/server.key
```

## 確認用
```
sudo cat /etc/apache2/ssl.key/server.key
```
## 公開鍵とCSRの作成
* <b>公開鍵はCSR生成時に添付される</b>形で作成されるので、公開鍵単独の生成は必要無い。
* 実際にwebサーバーで指定するのは<b>秘密鍵</b>と<b>公開鍵が添付されている認証局が発行した証明書</b>となる。

### csr作成
```
sudo openssl req -new -key /etc/apache2/ssl.key/server.key -out server.csr
```
|補足|説明|備考|
|----|----|----|
|-key|上記で作成したkeyを指定する|-key /etc/apache2/ssl.key/server.key|
|-out|拡張子は.csrとする||

### 必要項目の入力
* 対話形式で入力していく

|項目|説明|例|
|----|----|----|
|Country Name (2 letter code)|国名。最大2文字|JP|
|State or Province Name (full name) [Some-State]|届け出る事業所またはサイト運営組織の都道府県|TOKYO|
|Organization Name (eg, company)|サイトの運営組織の 【正式英語名称】 を指定|Sample.com|
|Organizational Unit Name (eg, section)|部門・部署名など 【任意の識別名称】 を指定。<br><b>ドメイン認証の場合には空欄でも可</b>||
|Common Name (e.g. server FQDN or YOUR name)|サイト閲覧者へ案内しているURLの【ドメイン名】を指定。<br>SSL接続の際にブラウザで指定するURL（FQDN）|sample.com|
|Email Address||空欄|
|Please enter the following 'extra' attributesto be sent with your certificate request A challenge password ||空欄|
|An optional company name||空欄|

https://www.ssl-concier.com/news/topics/230

## 作成したCSRの中身確認

|説明|情報内容|確認コマンド|
|----|----|----|
|非暗号状態|国、都道府県、市町村、ドメイン|openssl req -noout -text -in server.csr|
|暗号状態|暗号|cat server.csr|

## [さくらインターネット]JPRS SSLサーバ証明書
今回はさくらのSSLから JPRSドメイン認証型 990円/年 を申し込み
SAKURA internet URL: https://ssl.sakura.ad.jp/

下記情報を入力する。
* 支払方法指定
* 約款に同意
* CSRの入力
  →catコマンドで中身を確認し下記のような「BEGIN・・・」の行から「END～」の行までをコピペ
  ```
   -----BEGIN CERTIFICATE REQUEST-----
   dhakldfieyriuadfatur929~lkr235n4klnioka;lkafjdkl
   adkljfeiotue2348t489pqrugorjrklrglgkl;gatieutoio
   ・
   ・
   ・
   -----END CERTIFICATE REQUEST-----
  ```

## メールに従い手続きを行う
* [さくらインターネット]JPRS SSLサーバ証明書お申込受付完了のお知らせ（手続きの流れご案内）
* SSLサーバ証明書 認証ファイルのアップロードのお願い
* [さくらインターネット]JPRS SSLサーバ証明書発行のお知らせ

## SSLサーバ証明書 認証ファイルのアップロード
1. さくらの会員メニュー>契約中のサービス一覧にアクセス
1. 「SSL JPRS ドメイン認証型（1年）」から「SSLサーバ証明書 認証ファイル(例：cf123456789abc987654321efgd4a4b7.txt )」をダウンロードする
1. 「SSLサーバ証明書 認証ファイル」を「/opt/tomcat/apache-tomcat-9.0.52/webapps/.well-known/pki-validation」に設置する
1. 次項目の「サーバー証明書DL」で「サーバー証明書」と「中間CA証明書」をDLし,サーバーに設置する
1. 正常に設置できた場合、例：「http://shinseidomain.com/.well-known/pki-validation/cf123456789abc987654321efgd4a4b7.txt 」例のようにアクセスすると、ブラウザにファイルの中身(例：02123456789f82abcdeb123456789d5c)が表示される。
【--追記-- 表示時間はその時々でばらばら。前回は数分だったが、今回は数時間かかった。】
1. アップロード後、数分で「[さくらインターネット]JPRS SSLサーバ証明書発行のお知らせ」メールが届く


|ポイント|説明|備考|
|----|----|----|
|「サーバー証明書」|[ランダムな文字列].txt|中身も[ランダムな文字列]|
|「サーバー証明書」設置場所|「.well-known/pki-validation」は自分でディレクトリを作成する||
|「サーバー証明書」の名前や中身を変更しない。|同左||

## サーバー証明書DL
1. 「契約情報」>「契約サービスの確認」をクリック
1.  購入した証明書の「サーバ証明書」ボタンをクリック
1.  「サーバ証明書DL」ボタンをクリックしてサーバ証明書をダウンロード

## 中間CA証明書のDL
中間CA証明書のDLおよびインストール

## サーバー証明書および中間CA証明書をサーバーへ設置
上記で作成したディレクトリ(etc/apache2/ssl.crt)へ設置する。

## SSLに関するモジュールを有効化する
```
ssl a2enmod ssl
```
## default-ssl.confを修正する
```/etc/apache2/sites-available/default-ssl.conf
# 証明書のファイル名
SSLCertificateFile：/etc/apache2/ssl.crt/server.crt

# 秘密鍵のファイル名
SSLCertificateKeyFile：/etc/apache2/ssl.key/server.key

# 中間証明書のファイル名
SSLCertificateChainFile：/etc/apache2/ssl.crt/JPRS_DVCA_G4_PEM.cer
```

## サイト設定を有効化する
```
sudo a2ensite default-ssl
```
##  Apacheの再起動
```
sudo systemctl restart apache2
```
## 443のポートを開放する
```
 sudo ufw status
 sudo ufw allow 443
 sudo ufw reload
```
ここまででSSL接続が可能となる。

https://chee-s.net/ubuntuapache2%E3%81%A7%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%9Fweb%E3%82%B5%E3%83%BC%E3%83%90%E3%81%ABssl%E9%80%9A%E4%BF%A1%E3%82%92%E5%B0%8E%E5%85%A5