当サイトは長らくhttpで運用してまいりましたが、最近はLet’s Encrypt様にて無料でSSL証明書が発行してもらえるようです。

しかもcertbotで自動更新も可能!

こりゃもう入れるしか無いですな。

 

てことで進めてたらハマったので、備忘メモ。
ちなみに、こちらの記事を参考に進めさせていただきました。感謝!

まずはapt-getでcertbotをインストールするためのサーバを追加します。

$ sudo vi /etc/apt/sources.list
deb http://ftp.debian.org/debian jessie-backports main
↑を末尾に追記

updateしてみます。

$ sudo apt-get update
W: GPG エラー: http://ftp.debian.org jessie-backports InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY

ヒャッホー!エラーだぜ。
鍵を更新すればOKなようです。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys {↑でエラーが出たキー値(※キーが複数個なら複数回実行)}

もっぺんupdate!

$ sudo apt-get update
1,669 kB を 30秒 で取得しました (54.7 kB/s)
パッケージリストを読み込んでいます... 完了

よし、いけました!
certbotのインストールに再チャレンジ!

$ sudo apt-get install certbot
以下のパッケージには満たせない依存関係があります:
certbot : 依存: python-certbot (= 0.10.2-1~bpo8+1) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

なんじゃこりゃ???
依存関係のパッケージが壊れているときはaptitudeコマンドを使えばいいらしいデス。

$ sudo aptitude install certbot

以下のパッケージには満たされていない依存関係があります:
python-acme : 依存: python-openssl (>= 0.15) [0.14-1 が既にインストール済みです]
依存: python-cryptography (>= 0.8) [0.6.1-1+deb8u1 が既にインストール済みです]
依存: python-setuptools (>= 11.3~) [5.5.1-1 が既にインストール済みです]
python-certbot : 依存: python-cryptography (>= 0.7) [0.6.1-1+deb8u1 が既にインストール済みです]
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージを現在のバージョンに一時固定する:
1) certbot [インストールされていません]
2) python-acme [インストールされていません]
3) python-certbot [インストールされていません]

この解決方法を受け入れますか? [Y/n/q/?]

ふむふむ、なんかよくわからんけどYでいきますか。

インストール・削除・更新されるパッケージがありません。
更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

何も変わらない・・・。

sources.listに問題があるのかと思ってJPサーバを追加してみる。

 

$ sudo vi /etc/apt/sources.list

deb http://ftp.jaist.ac.jp/raspbian jessie main contrib non-free
deb http://ftp.yz.yamagata-u.ac.jp/pub/linux/raspbian/raspbian/ jessie main contrib non-free

 

$ sudo apt-get dist-upgrade
以下のパッケージはアップグレードされます:
autoconf autopoint bash-completion claws-mail claws-mail-i18n cups-bsd cups-client cups-common dh-python dh-strip-nondeterminism
dmidecode geoip-database gettext gettext-base git git-core git-man ifupdown libapparmor1 libasprintf-dev libasprintf0c2
libassuan0 libc-ares2 libcups2 libcupsimage2 libfftw3-double3 libfftw3-single3 libfile-stripnondeterminism-perl libgcrypt20
libgd3 libgeoip1 libgettextpo-dev libgettextpo0 libglib2.0-0 libglib2.0-bin libglib2.0-data libgpg-error0 libgphoto2-6
libjs-jquery libksba8 libldap-2.4-2 libmtp-common libmtp9 libpam-systemd libpulse-mainloop-glib0 libpulse0 libpulsedsp
libsqlite3-0 libssl-dev libssl-doc libssl1.0.0 libsystemd0 libudev1 libudisks2-0 linux-libc-dev manpages manpages-dev nano nginx
nginx-common nginx-full nodejs nodejs-legacy openresolv openssl pinentry-gtk2 pulseaudio-utils python-ndg-httpsclient
python-numpy python-pil python-pkg-resources python-ply python-pyasn1 python-pycparser python-requests python-serial
python-setuptools python-six python-urllib3 python3-numpy python3-pil python3-pkg-resources python3-requests python3-serial
python3-setuptools python3-six python3-urllib3 shared-mime-info systemd systemd-sysv tar udev udisks2 vdpau-va-driver

お、python系のアップデートきた!

$ sudo apt-get install certbot
python-acme : 依存: python-openssl (>= 0.15) [0.14-1 が既にインストール済みです]
依存: python-cryptography (>= 0.8) [0.6.1-1+deb8u1 が既にインストール済みです]
python-certbot : 依存: python-cryptography (>= 0.7) [0.6.1-1+deb8u1 が既にインストール済みです]

もうショックで尿漏れそう。
一応aptitudeも試す。

$ sudo aptitude install certbot
以下のパッケージを現在のバージョンに一時固定する:
1) certbot [インストールされていません]
2) python-acme [インストールされていません]
3) python-certbot [インストールされていません]

前とおんなじだな・・・。nでいいや。

この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージを削除する:
1) python-cffi

以下のパッケージをインストールする:
2) python-cffi-backend [1.9.1-2~bpo8+1 (jessie-backports)]
3) python-enum34 [1.0.3-1 (oldstable)]
4) python-idna [2.0-3~bpo8+1 (jessie-backports)]
5) python-ipaddress [1.0.16-1~bpo8+1 (jessie-backports)]

以下のパッケージを更新する:
6) python-cryptography [0.6.1-1+deb8u1 (now, oldstable) -> 1.7.1-3~bpo8+1 (jessie-backports)]
7) python-openssl [0.14-1 (now, oldstable) -> 16.0.0-1~bpo8+1 (jessie-backports)]

ン!?nにすると別の解決策が提示されるのか!
これを実行したところ、無事にcertbotがインストールできました。
さっそくSSL証明書を発行します!

$ certbot certonly --manual -d *.ijoru.com -m {メールアドレス} --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01
ConfigurationError: Wildcard domains are not supported: *.ijoru.com

えー、ワイルドカードが良いのにぃ。orz
調べてみると、certbotが古いっぽいです。
Raspbian Jessieでやってたから、Stretchにアップグレードすればイケるのかな??

ただOSアップデートはバックアップとってからやんなきゃなので、いったんapt-getを諦めてgitで最新版DL。

$ git clone https://github.com/certbot/certbot.git
$ certbot/certbot-auto certonly --manual -d *.ijoru.com -m {メールアドレス} --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.ijoru.com with the following value:

XXXXXXXXXXXXXXXXXX

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

おぉ、きた!
あとはDNSで_acme-challenge.ijoru.comのTXTレコードを作って、valueを放り込みます。
準備できたらEnterキーをポチッと。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/ijoru.com/fullchain.pem

できたー!

まとめ

  • sources.listで、apt-getのための国内サーバ入れとくべし
  • apt-getで困ったらaptitudeを使ってみるべし
  • OSバージョンにも注意?

まとまってないけどこんな感じ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*