uetennis’s diary

プログラミングについて学んだ事やライフハックについてかきます

5/3 nginxでSSL対応サイトが作れて嬉しい!

5/3 nginxでSSL対応サイトが作れて嬉しい!

目標・やりたい事は何か?何に興味あるか?

  1. rubymineインストール
  2. rubymineでメモをとる
  3. Gitの勉強
  4. 猿でもわかるgit入門

日常メモ・ちょっとした事・何を感じたか?

  • 問題点を成長だととらえられるフレームワークをちゅっと模索
  • 少しずつ日記に反映したい
  • やりたいことと技術力のバランスが大事かなと最近思う。どっちかに偏りすぎるのはあまりヘルシーじゃないかも
  • sslができて泣いちゃうぐらいに嬉しかった!

何を学んだか?・何がまだ理解できてないのか?

  • 少し前のログから解決策が出てくることを学んだ
  • 証明書の置き場を考えてなかった。PATHを意識せねば
  • プロセスを消すためにKillコマンドした。緊張した。
  • サーバーの再起動でエラー解決。 テラテイルで同じ悩みをもつ人がいた。
  • 先頭にhttps:// をつけるのをしてなくてオレオレ証明書が出来ない原因が他にあると思い嵌った
  • ドメイン変えたら上手くいった。もしかして、オレオレ証明書と Let's Encryptで証明書が1つのドメインに2つ証明書があったらだめかも
  • Deeplの翻訳精度が高くて、Linuxのエラーを読める。

勉強メモ

オレオレ証明書

#rootに行く
(桜・_・VPS) 17:39:50 :~$ su   #sudoだめだった

# 保存先を/etc/sslにしたいから(/etc/nginxでもいい)  /etc/sslのディレクトリに移動
root#  cd /etc/ssl

#  秘密鍵 (Private Key):server.keyを作成
/etc/ssl# openssl genrsa 2048 > server.key
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................................................................................+++++
.............+++++
e is 65537 (0x010001)

#証明書署名要求 (CSR):server.csrを作成
/etc/ssl#  openssl req -new -key server.key > server.csr
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) [AU]:JP  # 国
State or Province Name (full name) [Some-State]:TOKYO  # 都道府県
Locality Name (eg, city) []:SETAGAYAKU   #市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:   #会社名。Enterで飛ばしてもOK。
Organizational Unit Name (eg, section) []:   #組織名。Enterで飛ばしてもOK。
Common Name (e.g. server FQDN or YOUR name) []:www.nekonohimitu.work   #Virtual Hostのドメイン名
Email Address []:akatukijun@gmail.com  #meiladress

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #Enterで飛ばす
An optional company name []:   #Enterで飛ばす

# 作成されたserver.csrの中身を確認
/etc/ssl#  openssl req -text < server.csr

# # CSRに署名、サーバ証明書(CRT)作成
/etc/ssl#  openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
Signature ok
subject=C = JP, ST = TOKYO, L = SETAGAYAKU, O = Internet Widgits Pty Ltd, CN = www.nekonohimitu.work, emailAddress = akatukijun@gmail.com
Getting Private key  # getting Private keyと出ればOK

#作成されたserver.crtの中身を確認
/etc/ssl#  openssl x509 -text < server.crt
#  /etc/sslのディレクトリに入っているか確認
/etc/ssl# ls /etc/ssl
certs  openssl.cnf  private  server.crt  server.csr  server.key

#**もし誤って作成したら全部削除してから作り直す必要がある
$ apt-get --purge openssl
#**

# Virtual Hostの設定ファイル修正
(桜・_・VPS) 15:26:04 :~$ sudo vim /etc/nginx/sites-available/nekonohimitu.work


server {
  listen 443 ssl;
  server_name www.nekonohimitu.work;
  ssl on;
  ssl_certificate /etc/ssl/server.crt;
  ssl_certificate_key /etc/ssl/server.key;
  access_log /srv/www.nekonohimitu.work/log/access.log;
  error_log /srv/www.nekonohimitu.work/log/error.log;
  location / {
    root /srv/www.nekonohimitu.work/public/;
    index indexssl.html;
  }
}

# /etc/nginx/server.crtはCRTの置き場
# /etc/nginx/server.keyはkeyの置き場

$ sudo service nginx reload  #   nginx.confを再読込

Let's Encryptで証明書を取ってVirtualhost + SSL対応サイトを作る

  • こちらのサイトでnginx,Debian10と入力するとコマンドを教えてくれる certbot
#  certbotのインストール
sudo apt-get install certbot python-certbot-nginx
## 証明書の取得  80番と443番ポートを開けておく必要がある  nginxをstopして
(桜・_・VPS) 19:12:40 :~$  sudo certbot certonly --nginx


#証明書の場所確認
(桜・_・VPS) 19:18:14 :~$ sudo ls /etc/letsencrypt/live/
enginxnohimitu.work  README  www.nekonohimitu.work
#  発行された証明書たちを確認
(桜・_・VPS) 12:06:12 :~$  sudo ls -l /etc/letsencrypt/live/enginxnohimitu.work
total 4
lrwxrwxrwx 1 root root  43 May  2 20:24 cert.pem -> ../../archive/enginxnohimitu.work/cert1.pem
lrwxrwxrwx 1 root root  44 May  2 20:24 chain.pem -> ../../archive/enginxnohimitu.work/chain1.pem
lrwxrwxrwx 1 root root  48 May  2 20:24 fullchain.pem -> ../../archive/enginxnohimitu.work/fullchain1.pem
lrwxrwxrwx 1 root root  46 May  2 20:24 privkey.pem -> ../../archive/enginxnohimitu.work/privkey1.pem
-rw-r--r-- 1 root root 692 May  2 20:24 README
#  cert.pem    証明書
#  chain.pem   中間証明書
#  fullchain.pem   証明書+中間証明書の連結ファイル
#  privkey.pem   秘密鍵

#  confファイルには
#  ssl_certificate:証明書+中間証明書の連結ファイル(fullchain.pem)
#  ssl_certificate_key:秘密鍵(privkey.pem)
#  を設定する。

#hymlの編集
/srv/enginxnohimitu.work/public/index.html
/srv/enginxnohimitu.work/public/sslindex.html  #ssl用のhtml

#   enginxnohimitu.workの設定ファイル
(桜・_・VPS) 20:43:51 :~$ sudo vim /etc/nginx/sites-available/enginxnohimitu.work

server {
  listen 443 ssl;
  server_name enginxnohimitu.work;
  ssl_certificate /etc/letsencrypt/live/enginxnohimitu.work/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/enginxnohimitu.work/privkey.pem;
  access_log /srv/enginxnohimitu.work/log/access.log;
  error_log /srv/enginxnohimitu.work/log/error.log;
  location / {
    root /srv/enginxnohimitu.work/public/;
    index sslindex.html;   #ssl用のhtmlのパス
  }
}
server {
  listen 80;
  server_name enginxnohimitu.work;
  access_log /srv/enginxnohimitu.work/log/access.log;
  error_log /srv/enginxnohimitu.work/log/error.log;
  location / {
    root /srv/enginxnohimitu.work/public/;
    index index.html;
  }
}



#nginx止める
(桜・_・VPS) 20:43:08 :~$ sudo /etc/init.d/nginx stop
[ ok ] Stopping nginx (via systemctl): nginx.service.
#nginxをスタート
(桜・_・VPS) 20:43:42 :~$ sudo /etc/init.d/nginx start
[ ok ] Starting nginx (via systemctl): nginx.service.
# nginx.confを再読込
(桜・_・VPS) 20:43:46 :~$ sudo service nginx reload

参考

  1. nginxの最近のブログ記事
  2. nginx1
  3. nginx2
  4. nginx3
  5. nginx4
  6. nginx5
  7. nginx6
  8. VirtualHostについて(動画)
  9. memcachedを知り尽くす
  10. 猫とテニス。nginx
  11. 自作のHTMLをインターネットで配信する方法
  12. [033] Nginxのインストール
  13. nginxバーチャルホスト
  14. Nginx NOT FOUNDになる時のログの見方
  15. sslの概念
  16. オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっている
  17. プログラミングビギナーNekoteniがあなたに贈る!NginxでSSLの巻
  18. nginx で ssl 設定をする
  19. もう二度とハマらない、SSL証明書の設定
  20. もう二度とハマらない、SSL個人認証局の設定
  21. サーバ証明書の作成