2018年4月15日日曜日

Let's encryptでワイルドカード証明書発行してみた(certbot)

Let's encryptでワイルドカード証明書が発行できると聞いて、もうワイルドカード証明書のためにCloudFlareの証明書に頼らなくていいな!いっちょやるかーというノリでやってみました。

最初goのacme v2クライアントでやる記事が引っかかったりして焦りましたが、
certbotでもできるみたいで助かりました。

概ねこの記事の通り。
Let's Encrypt (certbot) でワイルドカード証明書できた! - Qiita 
コメントにある通り、書いてある手順通りにやるとサブドメインが付いているドメインの証明書しか発行されないので、サブドメイン一切なしのドメインも運用しているなら -d example.com -d *.example.com とかするといい感じでした。

あと、dnsチャレンジでドメインの所有者であることを証明しようとすると、2度まったく同じ文面でTXTレコードの値だけ違うものが2度表示されますが、これは間違いではなくもう一度DNSの設定を変更して続行すれば証明書が発行されるみたいです。何かミスったのかと思った。

初めてcertbotを設定するならcertbotを定期実行する指定が別途必要ですがまだ着手してないので設定したあとまた追記予定。

nginx側の設定は特に変わったことしないで大丈夫です。

NginxでのSSL設定の細かい意味 

ということで、以下を満たすnginxサーバーの設定ができました。
  • アクセスされたときに /var/www/[ホスト名] をドキュメントルートにする
  • phpをつかう
  • ssl証明書有効
  • httpアクセスはhttpsにリダイレクト
今のところだいたいこんな感じです。

    #example.conf
    
    #httpアクセスをhttpsにリダイレクト
    server {
        listen 80;
        server_name .example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        server_name .example.com;
        ssl_certificate     [証明書の格納ディレクトリ]/fullchain.pem;
        ssl_certificate_key [証明書の格納ディレクトリ]/privkey.pem;
    
        #ssl有効
        include /etc/nginx/conf.d/ssl.ext;
        #php有効
        include /etc/nginx/conf.d/php.ext;
        #アクセスされたドメインをdocument rootにする
        root /var/www/$host/;
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    
    #ssl.ext
    
    listen 443;
    ssl on;
    ssl_ciphers          "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK";
    ssl_protocols     TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers     on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    #php.ext
    
        index  index.php index.html index.htm;
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $request_filename;
            include        fastcgi_params;
        }
    

0 件のコメント:

コメントを投稿