ユーザ用ツール

サイト用ツール


letsencrypt

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
letsencrypt [2016/09/27 14:39] nullponletsencrypt [2017/07/19 03:15] (現在) nullpon
行 20: 行 20:
 </code> </code>
 ===== 証明書の発行 ===== ===== 証明書の発行 =====
 +
 +ここでは example.com と www.example.com の2つのドメインに対する証明書を発行するものとして記述する。
  
 証明書を発行するために、このサーバの管理者がドメインの所持者であることを確認する必要がある。let's encryptでは指定ドメインのport 80にHTTPアクセスして、certbotコマンドが作成したファイルを取得できればドメイン所持者であると見做す。 証明書を発行するために、このサーバの管理者がドメインの所持者であることを確認する必要がある。let's encryptでは指定ドメインのport 80にHTTPアクセスして、certbotコマンドが作成したファイルを取得できればドメイン所持者であると見做す。
  
-まずnginxをインストールして起動する。 +まずnginxをインストールしてドメイン所持確認の設定を追加し、nginxを起動する。
- +
-example.com と www.example.com の証明書を発行する。-wはnginxのドキュメントルートを指定する。ここにドメイン確認のためのファイルが作成される。-dはドメインで複数設定可能。サブジェクト代替名(SAN/Subject Alternative Name)によって1枚で複数のサーバ名に対応する証明書が発行される。 +
- +
- +
-<code> +
-/path/to/certbot-auto certonly --webroot -w /var/www/html -d example.com -d www.example.com +
-</code> +
- +
-nginxには予めドメイン確認のためにアクセスされるlocationの設定をしておく+
  
 <code> <code>
行 59: 行 52:
     }     }
 } }
 +</code>
 +
 +次に証明書を発行する。-wはnginxのドキュメントルートを指定する。ここにドメイン確認のためのファイルが作成される。-dはドメインで複数設定可能。サブジェクト代替名(SAN/Subject Alternative Name)によって1枚で複数のサーバ名に対応する証明書が発行される。
 +
 +<code>
 +sudo -H /path/to/certbot-auto certonly --webroot -w /var/www/html -d example.com -d www.example.com
 </code> </code>
  
行 70: 行 69:
 ===== httpsの設定 ===== ===== httpsの設定 =====
  
-nginxにsslの設定を行う。+nginxにsslの設定を行う。以下の設定ではhttp2も有効になる(http2はnginx 1.9.5以降で有効)
  
 <code> <code>
行 125: 行 124:
  
 <code> <code>
-/path/to/certbot-auto renew && service nginx reload+sudo -H /path/to/certbot-auto renew -n 
 +sudo service nginx reload
 </code> </code>
  
行 159: 行 159:
  
 としてからcertbot-autoを実行する。 としてからcertbot-autoを実行する。
 +
 +===== セキュリティの強化 =====
 +
 +https://wiki.mozilla.org/Security/Server_Side_TLS
 +
 +==== Strict Transport Security (HSTS) の設定 ====
 +
 +あるドメインへhttpsでアクセスした場合、以降そのドメインへの接続にはハイパーリンクなどでhttpが指定されていてもhttpsを使うようにブラウザに指示するHTTPヘッダ
 +
 +<code>
 +server {
 +    
 +    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;   
 +    
 +}
 +</code>
 +
 +  * max-age - 有効期間(秒、31536000は1年間)を指定するヘッダオプション、この期間ブラウザはhttpsを使うよう記憶する。
 +  * includeSubDomains - サブドメインもhttpsを使うようにブラウザに指示するヘッダオプション。
 +  * always - nginxのすべてのレスポンス(内部的に生成されたエラーレスポンスなどの場合も)ヘッダを付加するようにnginxに指示する。
 +
 +==== プロトコルと暗号化スイートの指定 ====
 +
 +最早セキュアではないプロトコルと暗号化スイートを除外する。設定によっては古いブラウザやデバイスではアクセス不能になる。
 +
 +セキュアな設定は年々変化するので、これをコピーして使わないこと。
 +
 +<code>
 +server {
 +    ssl_protocols TLSv1.2;
 +    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
 +    ssl_prefer_server_ciphers on;
 +}
 +</code>
 +
 +  * ssl_protocols 通信プロトコル
 +  * ssl_ciphers 使用可能な暗号スイート
 +  * ssl_prefer_server_ciphers onにすると暗号スイートの選択はサーバ側の指定に従い、クライアントの指定は無視される
 +
 +https://mozilla.github.io/server-side-tls/ssl-config-generator/
letsencrypt.1474987143.txt.gz · 最終更新: 2016/09/27 14:39 by nullpon