迫真の氷結晶

初投稿です。

  • HOME
  • 自己紹介
  • 作品集
  • ポエム系

Let's EncryptではなくBuypassの証明書を作る

2020-01-11
  • #技術系

どいつもこいつも馬鹿の一つ覚えみたいにLet's Encrypt、Let's EncryptっておまえらみんなLet's Encrypt村の村人かっつーの

だいたいどの個人サイトもみんな、証明書を表示すると認証局が Let's Encrypt だから、あえて Let's Encrypt 以外の認証局に発行してもらった証明書を使ってたらちょっとイケてる…イケてない…?

Redditでこんなスレッドを発見。

Alternatives to Lets Encrypt? - Reddit

BuyPass is a commercial entity that provides free standard SSL certificates using the ACME protocol, just like LetsEncrypt.

BuyPass という認証局があるらしい。試してみよう。

One bonus is that their certs are good for 180 days, not just 90 days like LE.

Let's Encrypt と違って Buypass の証明書の有効期限は180日間だそうだ。

ただし、セキュリティ的には期限は短い方が有利という指摘が。

It is not a bonus. Validity periods exist for a reason.

When someone gets a valid cert for your domain* or yours is compromised the attacker can use it just for a limited time.

より安全でない証明書を選ぶわけだからイケてるかと言われたらイケてないかもしれない。

サーバー環境

  • VPS(conoha使ってます)
  • OS: CentOS 7
  • Webサーバー: nginx
  • 結構昔にLet's Encrypt導入済み(certbotがインストールされている)

認証局 Buypassの認証を受ける

https://www.buypass.com/ssl/products/acme のGET STARTEDの内容に沿って証明書の取得を試みます。

認証局に登録

# certbot register -m 'YOUR_EMAIL' --agree-tos --server 'https://api.buypass.com/acme/directory'
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): api.buypass.com

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y
Starting new HTTPS connection (1): supporters.eff.org

IMPORTANT NOTES:
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
# 

「君のメールアドレスにElectronic Frontier Foundation(電子フロンティア財団)からニュースとか配信したいんだけどいいかな?」と尋ねられる。どっちでもいいけどせっかくなのでYesを選択。

証明書を取得

参照している記事ではこの後

# certbot certonly --webroot -w /var/www/example.com/public_html/ -d example.com -d www.example.com --server 'https://api.buypass.com/acme/directory'

を実行するように言ってます。

これは webroot モードといって certbot が読み書きできて、かつ外部からもアクセス可能な静的ディレクトリを用意することで、nginx を停止せずに証明書を取得するモード(のはず)です。

最初は webroot モードを使おうとして、すでにリバースプロキシとして設定済みのnginxの設定ファイルに対して、 location /.well-known だけは例外的に静的配信するように設定してみたりしたんですが、どうもうまくいかなかったので、webroot は諦めて、同じく nginx を停止せずに証明書を取得できる nginx プラグインを使った方法を試すことにしました。

--nginx オプションを付けると nginx プラグインが有効な状態で証明書を取得してくれるようです。

# certbot certonly --nginx -d iciclize.net --server 'https://api.buypass.com/acme/directory/'
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Could not choose appropriate plugin: The requested nginx plugin does not appear to be installed
The requested nginx plugin does not appear to be installed

プラグインがないと言われてしまいました。何らかの方法で導入する必要があるみたいです。

Webで検索してみると、CentOSの場合 python2-certbot-nginx というパッケージが nginx プラグインであることが判明したので、これをインストールします。

# yum install python2-certbot-nginx

yumで特にエラーは出ませんでした。

nginx モジュールを導入したので今度こそ証明書を取得しましょう。

# certbot certonly --nginx -d iciclize.net --server 'https://api.buypass.com/acme/directory/'

http-01 challenge for iciclize.net という文字列を含む結果が流れて、エラーなく終了しました。証明書がうまく発行されたようです。

ちなみに、-d オプションを複数指定して、複数のFQDNに対応する証明書を発行しようとしたらうまくいきませんでした。全部の証明書を削除してから、まとめて全部のFQDNを指定した証明書を再び発行してもらえばうまくいくかもしれません。

nginx を再起動

# systemctl restart nginx

ブラウザで当該サイトを表示して確認してみると、証明書の認証局が Buypass AS-xxxxxxx となっていました。やったぜ。

いやちょっと待てよ

よく考えたら珍しい認証局の証明書を使うのってPKI(Public Key Infrastructure)の本質ガン無視してないか?(懸念)

これつまり証明書を検証できるデバイスがより少なくなるってことですよね?これ普通にアホなことしてない?

陰毛がストレートだったらかっこいいと思って陰毛にパーマかけたら失敗した父親(実話)と発想が同じなんだよなあ…