さくら& 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/sudoers
でroot ALL=(ALL:ALL) ALL
のしたにsubasa ALL=(ALL:ALL) ALL
を追加。
4.ssh設定
参考:SSHなるものをよくわからずに使っている人のための手引書
$ 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
$ 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 -P
とssh -p
のP
が大文字か小文字かではまったので注意!
②なるべく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
で起動!
できました。
6.ドメインを取得してnginxでVirtulHost
参考:プログラミングビギナーNekoteniがあなたに贈る!NginxでVirtual Hostの巻 全体的なディレクトリを視覚的にわかりやすく説明してくれている! - 新しく取得したドメインにお名前.comのネームサーバを登録
7. nginxでSSL
SSL/TLSの暗号化通信をする仕組み
サーバー/クライアント間の通信のセキュリティーを高めるプロトコル。認証局より発行されたサーバー証明書を利用して、サーバーの証明、通信の暗号化、改ざんの検出などを行う公開鍵暗号で共通鍵をやりとり。共通鍵でデータを暗号化して通信。
SSLはネットケープコミュニケーションズ社によって開発された。それを元にIETF(インターネット技術タスクフォース)で標準化されたものがITLS。SSLという名前が広まっている為、現在もそう呼ばれているが、TLSが最新 参考:スラスラわかるネットワーク&TCP/IPの基本
簡単な図解
やること
① 秘密鍵(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完了
はまったのは80番と443番ポートのファイルの置く場所。両方の表示で違うhtmlを表示させる際、root /home/demo/public_html/tsuba.work/public/;
のpublic
と違うフォルダを作成し、root
の記載を間違えてしまったことでの文字化けや、defaultのhtmlがなぜか表示されるといったエラーに遭遇。しっかりとパスとフォルダをつくる場所を確認!
以上。