Kusanagi managerでサブドメイン「www」指定でSSLが有効化できない時

新しくConoha VPSにwordpressを移行した時のメモ

なぜ、ConohaVPSを選んだか_φ(・_・

  • SSDでメモリ1G 980円は安い!
  • wordpressで最速なkusanagiを簡単に導入できる。
  • 面倒なSSLの設定がワンクリックでできる ← まじやばいす
  • 単純にいままで使っていたサーバーが激重になってきて、こんなにスペックいいのに新しいVPSと値段一緒😂

ざっくり移行時の流れ

Conoha管理画面

↑のConoha管理画面で > サーバー追加 > アプリケーションを選んで、
「かんたんKUSANAGI」を選択。

サーバー

↑契約したサーバーにKUSANAGI管理という画面ボタンがあるので、それを起動すると、

kusanagi manager画面

このようなサイト管理画面がでる。

本題のwwwサブドメのSSL化について

ようは下記のようにしたい

が、下記のようなエラーでならない。

ケース1 エラー「DNSやIPの設定を確認してください」

DNS設定が浸透してしきっていない。

DNS設定画面参考



サーバーを変更したてで、DNSの浸透しきっていない場合に表示されます。
移行先サーバーからnslookup www.hogehogehogehogehoge.com で移行先サーバーのIPに変更されているか確認し、まだ浸透しておらず、
急いでいる場合は、/etc/hostsファイルに変更先IPとドメインを紐付けて試す事もできます。※浸透が終わったらちゃんと戻す事

/ets/hostsファイルの参考

ケース2 エラー「サイトの設定変更:証明書の取得に失敗しました。リクエスト超過で制限されています。」

SSL化 ONを短時間でクリックしすぎ。

サイトの設定変更:証明書の取得に失敗しました。リクエスト超過で制限されています。

裏側で、** Let’s Encrypt ** という無料でSSLが利用できるサービスを利用しており、その取得処理を何度もリクエストしてしまっている事が原因のようです。

「letsencryptとは」の画像検索結果

しばらく時間をおいてから試すとエラーはなくなります。

ケース3 エラー「DNSやIPの設定を確認してください」

www.○○.comのように、wwwサブドメイン指定でSSL化すると、○○.comを参照してSSLを取得しようとしてしまう。

僕はこれにハマりました。
古い方サーバーの方のSSLを失効させて、再度取得を試したりしましたが関係なく、色々ググってみました。

試行錯誤時に参考にさせて頂いたサイト
https://miyatore.com/archives/3136

結局ターミナルコマンドでチェックしてみたところ、

# kusanagi ssl --email メアド プロファイル名

※プロファイル名は、下記で確認できます。

# vim /etc/kusanagi.d/profile.conf

それで、結局移行先サーバー内のコマンドでチェック。

# kusanagi ssl --email aaaaaaaaaaa@gmail.com f69XXXXXXXXXXXX
# kusanagi ssl --email aaaaaaaaaaa@gmail.com f69XXXXXXXXXXXX
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for doya.link
Using the webroot path /home/kusanagi/f69XXXXXXXXXXXX/DocumentRoot for all unmatched domains.
Waiting for verification...
Challenge failed for domain doya.link
http-01 challenge for doya.link
Cleaning up challenges
Some challenges have failed.


IMPORTANT NOTES:
 - The following errors were reported by the server:


   Domain: XXXX.com  ← これ!!!!!!
   Type:   unauthorized
   Detail: Invalid response from
   http://XXXX.com/.well-known/acme-challenge/JesgB_EoCALuMGBbQVZ-XXXXXXXXX
   [157.7.237.223]: "<html>\r\n<head><title>404 Not
   Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404
   Not Found</h1></center>\r\n<hr><center>"


   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.
Cannot get Let\'s Encrypt SSL Certificate files.
失敗しました。

Domain: XXXX.com ← これ!!!!!!

www.XXXX.comをSSL化したいのに、XXXX.comを見てる。。

kusanagiサーバーの挙動を見ているとwww.XXXX.comでアクセスすると、
自動でXXXX.comにリダイレクトしているようです。。😂

なので、www.XXXX.comとXXXX.comをセットで考える必要があるようですw

なので、僕は、wwwありとなし両方を移行すると解決しましたw

過去に手動でLet’s EncryptでSSL化した方法

無料SSL Let’s encryptを更新した際のメモ

無料SSL証明書

無料SSLで有名なLet’s encryptを、利用させて頂いており、
それの有効期限3ヶ月と短く、その有効期限が迫ったので、更新対応した際のメモ

導入はほぼ200%こちらのサイト様を参考にさせていただきましたm( _ _ ; )m
http://qiita.com/sak_2/items/ff835b669c0a7e110b09

そもそも自動化しろよって話ですが、
手動で更新した際のメモw

1. 恐らく導入時に使ったletsencrypt-autoというファイルを探す。

2. 生成したキーファイル類を確認しておく、必要であればバックアップも


$ cd /etc/letsencrypt/live/blog.4star.link/ cert.pem chain.pem fullchain.pem privkey.pem

3. それぞれのpemファイルがシンボリックで参照されているので、それがnginxで設定しているファイルと同じか確認


cert.pem -> ../../archive/blog.4star.link/cert1.pem chain.pem -> ../../archive/blog.4star.link/chain1.pem fullchain.pem -> ../../archive/blog.4star.link/fullchain1.pem privkey.pem -> ../../archive/blog.4star.link/privkey1.pem

4. で1.のコマンド実行し更新!


$ ./letsencrypt-auto renew

エラーがでた


$ ./letsencrypt-auto renew Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/blog.4star.link.conf ------------------------------------------------------------------------------- Cert is due for renewal, auto-renewing... Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: tls-sni-01 challenge for blog.4star.link ------------------------------------------------------------------------------- Port 443 is already in use by another process. This will prevent us from binding to that port. Please stop the process that is populating the port in question and try again. For automated renewal, you may want to use a script that stops and starts your webserver. You can find an example at https://certbot.eff.org/docs/using.html#renewal . Alternatively you can use the webroot plugin to renew without needing to stop and start your webserver. ------------------------------------------------------------------------------- Cleaning up challenges Attempting to renew cert from /etc/letsencrypt/renewal/blog.4star.link.conf produced an unexpected error: At least one of the (possibly) required ports is already taken.. Skipping. All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/blog.4star.link/fullchain.pem (failure) 1 renew failure(s), 0 parse failure(s)

必要なポートが既に使われているらしい。

ポートチェック


$ netstat -tanplsof -i:80

nginxで使っているので一旦停止(サービスが止まるので注意!


$ service nginx stop

再びrenew!


$ ./letsencrypt-auto renew Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/blog.4star.link.conf ------------------------------------------------------------------------------- Cert is due for renewal, auto-renewing... Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: tls-sni-01 challenge for blog.4star.link ------------------------------------------------------------------------------- Port 443 is already in use by another process. This will prevent us from binding to that port. Please stop the process that is populating the port in question and try again. For automated renewal, you may want to use a script that stops and starts your webserver. You can find an example at https://certbot.eff.org/docs/using.html#renewal . Alternatively you can use the webroot plugin to renew without needing to stop and start your webserver. ------------------------------------------------------------------------------- Cleaning up challenges Attempting to renew cert from /etc/letsencrypt/renewal/blog.4star.link.conf produced an unexpected error: At least one of the (possibly) required ports is already taken.. Skipping. All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/blog.4star.link/fullchain.pem (failure) 1 renew failure(s), 0 parse failure(s)

また同じエラーが。。。

さらにもう一回!

どりゃっっxさらにもう一回!

ぐああーーっしゃいさらにもう1っかい!

。。。。

。。。。。

何度か同じエラーがでたあと、


$ ./letsencrypt-auto renew Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/blog.4star.link.conf ------------------------------------------------------------------------------- Cert is due for renewal, auto-renewing... Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: tls-sni-01 challenge for blog.4star.link Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem ------------------------------------------------------------------------------- new certificate deployed without reload, fullchain is /etc/letsencrypt/live/blog.4star.link/fullchain.pem ------------------------------------------------------------------------------- Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/blog.4star.link/fullchain.pem (success)

成功ーーーーーーー!

最高ーーーーーーー!

わっほい!


$ service nginx start

証明書が更新されていない。。。。

生成されたpemファイルをチェック。。。

pemが複数連番になってつくられている、、


/archive/blog.4star.link/cert1.pem /archive/blog.4star.link/cert2.pem

僕の場合archiveのファイルをnginx.confに指定していたので、
生成された番号のつきの名前の方を変更。。
人力でファイルを変更。。。w

nginx.conf


ssl_certificate /etc/letsencrypt/archive/blog.4star.link/fullchain**2**.pem; ssl_certificate_key /etc/letsencrypt/archive/blog.4star.link/privkey**2**.pem; ssl_trusted_certificate /etc/letsencrypt/archive/blog.4star.link/fullchain**2**.pem;

あとは、

せいや。。。!!!!


$ service nginx start

無料SSL証明書
無料SSL証明書

成功done!

無料SSLの「let’s encrypt」を導入してみた

https化

無料SSLの「let’s encrypt」を導入してみた

https化

昔はSSL化(https化)はお金がかかるし、処理速度も遅くなるし、

導入も面倒だしと思っていたのですが、

最近はそうでもなくSSLだけと無料速いになったようですので、

あと世の中的にもう全部SSLにしようという流れにまけてSSLにしたいと思います。

SEO効果も若干はあるようですので。。

あと、iphoneアプリのATS無効も効かなくなり来年あたりから完全にhttp通信が死んでしまいそうなので、

1. 無料SSL「let’s encrypt 」をインストール

gitからファイルを落とし

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt/

下記コマンドで環境チェックを行うようです。成功するとhelpが表示されます

$ ./letsencrypt-auto --help

エラー内容が表示される場合は、1つ1つ改善する必要があります。
僕の場合はopensslのバージョンが古かったです。。 yum update opensslで完全されましたが。

2. SSL証明書周りをダウンロード

下記のように自分のSSL化したいドメインを指定して実行すると、
対話式の画面で、メールアドレスを求められます。

./letsencrypt-auto certonly -a standalone -d ドメイン

対話画面のメールアドレスを入力し、
さらに利用規約に同意すると、
完了画面が表示されます!

The program nginx (process ID 18766) is already listening on TCP 
port 80. This will prevent us from binding to that port. Please stop 
the nginx program temporarily and then try again. 

ただ僕の場合は、下記のようなエラーでたので、
認証チェック時の80ポートに使っているnginxを、
面倒だったので停止してから、証明書DLのコマンドを打ち直しました。

すると、無事完了し、下記フォルダ内に一式証明書周りのファイルが生成されました。

/etc/letsencrypt/archive/ドメイン名/privkey1.pem ← 秘密キー
/etc/letsencrypt/archive/ドメイン名/cert1.pem
/etc/letsencrypt/archive/ドメイン名/chain1.pem
/etc/letsencrypt/archive/ドメイン名/fullchain1.pem ← サーバー証明書と中間証明書のガッチャンコ

これをnginxの設定に入れます。

3. nginxでSSLの設定

$vim /etc/nginx/conf.d/hoge.conf

下記のような内容をnginxに設定


listen 443 ssl; ssl_certificate /etc/letsencrypt/archive/ドメイン/fullchain1.pem; ssl_certificate_key /etc/letsencrypt/archive/ドメイン/privkey1.pem; ssl_protocols SSLv3 TLSv1; ssl_ciphers HIGH:!ADH:!MD5;

あとはnginxのチェック&反映

$ nginx -t
$ service nginx restart

最後にhttpsでドメインチェック!

その他すすめる上で気になるところTIPS

  • 認証チェックする際のポートが開いていない、ポートが開いているか確認する
  • letsencryptの有効期限が3ヶ月らしいので、cronなどで自動更新処理をしておくといいかも
  • httpからhttpsにリダイレクトなどSEO効果など大事にするチューニング色々

ほぼこちら完結かつわかりやすい記事を参考にさせて頂きました!
ありがとうございます!
http://qiita.com/sak_2/items/ff835b669c0a7e110b09