GCP + CentOS6(VM) + nginx にSSL(certbot)入れちゃう

# 今回やること
GCP + CentOS6(VM) + nginxにSSL入れてhttps接続してみよう

# 情報収集
[GCPでLet's EncryptしてSSL(TLS)の表示](https://ryomoyr.hatenablog.com/entry/2018/08/31/183705)
[GCPでLet's encryptでSSL(TLS)を自動更新](https://ryomoyr.hatenablog.com/entry/2018/09/02/131541)
[Let's Encrypt で Nginx にSSLを設定する](https://qiita.com/HeRo/items/f9eb8d8a08d4d5b63ee9)
[Nginxでリクエストを強制的にhttps(TLS)にリダイレクトする](https://qiita.com/fisherman08/items/e39e67e85ef07a1ef3db)
[HTTP > HTTPSへのリダイレクト設定後にNGINXがリダイレクトを繰り返す問題への対応](https://qiita.com/naokit-dev/items/8abcef514af230ddc178)
certbot入れてsslを取得して、nginxに設定するのね。
# certbot入れちゃう
gcpにsshで接続
とりあえずnginx停止
```sudo service nginx stop```
git入れる
```sudo yum install git```
certbotをgit clone
```cd /usr/local```
```sudo git clone https://github.com/certbot/certbot.git```
# SSL証明書取得
以下実行
```cd /usr/local/certbot```
```./certbot-auto certonly --standalone -t```
その後以下の入力確認が
```Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):```
メールアドレス入力
```(A)gree/(C)ancel:```
アグリー！
```(Y)es/(N)o:```
なんかメール送るけどいい？みたいな質問なのでNO
```Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel):```
ドメイン名入力(ドメイン名とwww.ドメイン名を入力 スペースで区切る)
出来たっぽい。。。

# nginxの設定
下記修正は/etc/nginx/conf.d/にあるdefault.confを修正してもいいし
別confで作成しても問題ないと思います。
私は/etc/nginx/conf.d/にある既存のファイルをバックアップして、ドメイン名のconfファイルを作成しました。

```
cd /etc/nginx/conf.d
sudo mv default.conf default.conf.org
sudo mv ssl.conf ssl.conf.org
sudo mv virtual.conf virtual.conf.org
sudo cp default.conf.org ドメイン名.conf
```
作成したドメイン名.confを以下のように修正

```
server {
    listen      80;
    server_name ドメイン名;
    return 301 https://ドメイン名$request_uri;
    ※リダイレクト
}
server {
    listen      80;
    listen      443;
    server_name www.ドメイン名;
    return 301 https://ドメイン名$request_uri;
    ※リダイレクト
}

server {
    listen              443 ssl default_server;
    listen              [::]:443 ssl;
    server_name         ドメイン名;
    ssl_protocols       TLSv1.1 TLSv1.2;
    ssl_certificate     /etc/letsencrypt/live/ドメイン名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;
    (中略)
}
```
nginx.confの読み込みファイルを修正する

```
    #include /etc/nginx/conf.d/*.conf;コメントアウト
    include /etc/nginx/conf.d/ドメイン名.conf;
```
nginx起動
```sudo service nginx start```
```sudo service nginx reload```
```sudo service nginx restart```
起動した！！
GCPのVMにてファイアウォールを設定
![2020-09-01_01h01_43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567235/0059a952-906a-00b3-c05b-27b6dac8441d.jpeg)
# 接続確認
![2020-09-01_02h29_53.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567235/696cbc39-a2e6-9c03-b673-689685b603f3.jpeg)
httpでもhttpsでもwwwでも接続できた！
イエイ
# certbot自動更新設定
cronに以下を設定
```crontab -e```

```
0 4 1 * * root /usr/local/certbot/certbot-auto renew --post-hook "service nginx restart"
```
うまく動くか、今日確認できそう。
でも眠いからお休みなさい。

# これまでの作業
GCP復活の作業履歴
[放置してたGCPを復活させる（１）- プロジェクト作成 -](https://qiita.com/3S_Laboo/items/62322280d1844d461bab)
[放置してたGCPを復活させる（２）- VMインスタンス作成 -](https://qiita.com/3S_Laboo/items/03b54621479e193101f7)
[放置してたGCPを復活させる（３）- gcloud CLIインストール -](https://qiita.com/3S_Laboo/items/75682b3d008d0fdce355)
[放置してたGCPを復活させる（４）- PC(Windows10)からVMにssh接続 -](https://qiita.com/3S_Laboo/items/63a17738071a171decb1)
[放置してたGCPを復活させる（５）- VMのIPを固定する -](https://qiita.com/3S_Laboo/items/c897628aec6d04f4fe5f)
[放置してたGCPを復活させる（６）- nginxインストールとhttp設定 -](https://qiita.com/3S_Laboo/items/9a8446f84baa80252cb9)
[放置してたGCPを復活させる（終わり）- 独自ドメインの設定 -](https://qiita.com/3S_Laboo/items/cce944d49cbd1d4aa745)