Programming from 30

自分の備忘録が、誰かの為になれば・・

さくら& Debian & nginxでhttps通信をする備忘録

FjordBootCampプラクティス備忘録

さくらVPSからnginxのSSL化まで

WEBのことを知る上でいくつもの課題があり、一段落したので忘れないように、思い出しながらの備忘録
参考も乗せながら、なるべくシンプルに書いて行きますますが、結構長くなる予定。

1.さくらVPSに登録し、Debianインストール

まずはここから登録!データごとに別れているけどお好きなプランを選んで、カード決済すると②週間無料になっている。一応確認!お試し期間のみの利用であれば、会員トップメニュー→契約情報→キャンセルで簡単に解約可能。 参考:ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」 | さくらのナレッジ

2.次にDebianインストール

カスタムOSインストールガイド - Debian 8 / 9を参考に最新のDebianをインストール 注意点: - 十字キーでの操作で - Graphical installを間違って押さない - rootとユーザーパスワードは別

3. Debianにsudoとvimをインストール

参考:sudoをインストールしvisudoで使えるようにする

# apt update
# apt install sudo
# adduser username sudo
# apt install vim

vim /etc/sudoersroot ALL=(ALL:ALL) ALLのしたにsubasa ALL=(ALL:ALL) ALLを追加。

4.ssh設定

参考:SSHなるものをよくわからずに使っている人のための手引書

Debian操作よりMacでの操作を先に!

$ mkdir ~/.ssh
$ ssh-keygen -t client_rsa -b 4096 
$ passwordを打ち込む

Mac秘密鍵を記憶
$ ssh-add -K ~/.ssh/client_rsaでパスワードを尋ねられるので、先ほど設定していたパスワードを打ち込む!
Mac側→Debian側 公開鍵をコピー・サーバ側に設置

$ scp ~/.ssh/client_rsa.pub remote-user-name@serverIP-address:~/.ssh/client_rsa.pub

次はDebianにインストール

$ sudo apt update
$ sudo apt install ssh

~/.sshディレクトリを最初に作成後

$ mkdir ~/.ssh
$ chmod 700 ~./ssh
$ cat client_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys

バックアップ取って、sshd_configに設定

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bk
$ sudo vim /etc/ssh/sshd_config 

①PermitRootLoginをnoに変更 ②port番号変更 → 攻撃対策の為 ③PasswordAuthenticationをnoに変更 ↓ sudo /etc/init.d_ssh restartで適用!!
$ ssh -p <port-number> <user-name>@<serverIP-address>にアクセスできるか確認! 注意: ①scp -Pssh -pPが大文字か小文字かではまったので注意! ②なるべくmac側の設定から行うとconnection refugeされない

5.nginxインストール

参考:Debianで最新版のnginxをapt-getを使ってインストール  wgetを使用しインストール

$ apt-key add nginx_signing.key
$ sudo apt-key add nginx_signing.key
$ sudo vim  /etc/apt/sources.list

以下を追加

deb http://nginx.org/packages/debian/ stretch nginx
deb-src http://nginx.org/packages/debian/ stretch nginx

変更を加えたので更新します! sudo apt-get update nginxをインストール sudo apt-get install nginx インストールできたか確認! $ sudo nginx -v

$ sudo service nginx status
● nginx.service - nginx - high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: http://nginx.org/en/docs/

動いてないのでsudo /etc/init.d/nginx startで起動! f:id:tsubasa0105:20181014183632p:plain できました。

6.ドメインを取得してnginxでVirtulHost

参考:プログラミングビギナーNekoteniがあなたに贈る!NginxでVirtual Hostの巻 全体的なディレクトリを視覚的にわかりやすく説明してくれている! - 新しく取得したドメインお名前.comのネームサーバを登録 f:id:tsubasa0105:20181014210139p:plain

  • ディレクトリ作成や設定ファイルに関しては上記のサイトを参考に実行し、Chrome(ブラウザ)でアクセス!間違いがなければtsuba.workのページが表示されるはず!

7. nginxでSSL

簡単な図解 f:id:tsubasa0105:20181015225657p:plain

  • やること
    秘密鍵(Private Key):server.keyを取得
    Certbotサーバ証明書(CRT):server.crtを取得
    ③ 以上2点を設定ファイルの反映
    ④ httpとhttpsで表示されるhtmlを2種類用意

  • Certbotをgitでインストール
    使用コマンドを羅列

$ sudo apt update
$ sudo apt install git
$ git clone https://github.com/certbot/certbot
$ chmod 700 ~/certbot
$ cd certbot
$ ./certbot-auto certonly --standalone -t

鍵が作られているか確認

$ sudo ls /etc/letsencrypt/live/tsuba.work/
README  cert.pem  chain.pem  fullchain.pem  privkey.p
  • Nginxの設定ファイルを変更
server {
    listen    80 ;
    server_name  tsuba.work;

    #charset koi8-r;
    access_log  /var/log/nginx/tsuba.access.log  main;
    location / {
        root   /home/demo/public_html/tsuba.work/public/; 
        index  index2.html index.htm;
        charset UTF-8;
    }

 
server {
    listen    443 ssl ;
    server_name  tsuba.work;

    #charset koi8-r;
    access_log  /var/log/nginx/tsuba.access.log  main;
    ssl_certificate /etc/letsencrypt/live/tsuba.work/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/tsuba.work/privkey.pem;
    location / {
        root   /home/demo/public_html/tsuba.work/public/; 
        index  index.html index.htm;
    }

こんな感じの設定でSSL完了
f:id:tsubasa0105:20181015230518p:plain はまったのは80番と443番ポートのファイルの置く場所。両方の表示で違うhtmlを表示させる際、root /home/demo/public_html/tsuba.work/public/;publicと違うフォルダを作成し、rootの記載を間違えてしまったことでの文字化けや、defaultのhtmlがなぜか表示されるといったエラーに遭遇。しっかりとパスとフォルダをつくる場所を確認! 以上。