- 1. ports・pkg
- 2. ちょっとしたトラブル
1. ports・pkg
[Let's Encrypt] で証明書を取得するには、それを使用するウェブサーバ自体に、取得用のクライアントプログラムをインストールする必要があるようです。
これは合理的な考えであると思います。取得者がウェブサーバを管理していること、また、ウェブサーバにそれをインストールする能力を持っていることが前提になるからです。
クライアントプログラムは、「Linux」の主要なディストリビューションや「Mac OS」、そして「FreeBSD」用もあります。
なぜか「Windows」用がないのは、「Windows」をサーバとして利用するのは、商用の有料証明書を取得する財力があると考えているのかしらん。
で、「FreeBSD」は、「ports」も「pkg」もあり、「ports」は、下記のディレクトリになっています。
/usr/ports/security/py-certbot
「pkg」名は「py27-certbot」です。
2. ちょっとしたトラブル
さて、クライアントプログラムの「certbot」をインストールしたところでちょっとしたトラブルが・・・。
説明サイトにならって、「help」を見ようとすると
$ certbot --help
Traceback (most recent call last):
File "/usr/local/bin/certbot", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3138, in <module>
・・・
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 867, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'acme==0.19.0' distribution was not found and is required by certbot
あう、だめじゃん。
試しに、「ports」を削除して「pkg」でインストールしようとすると
> pkg install py27-certbot
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
pkg: ja-man has a missing dependency: ja-less+iso
The following 54 package(s) will be affected (of 0 checked):
Installed packages to be REMOVED:
libxslt-1.1.29_1
・・・
llvm40-4.0.1_3
New packages to be INSTALLED:
py27-certbot: 0.18.2,1
Installed packages to be REINSTALLED:
compat6x-i386-6.4.604000.200810_3
libyaml-0.1.6_2 (ABI changed: 'freebsd:9:x86:32' -> 'freebsd:10:x86:32')
Number of packages to be removed: 51
Number of packages to be installed: 1
Number of packages to be reinstalled: 2
The operation will free 3 GiB.
3 MiB to be downloaded.
Proceed with this action? [y/N]:
省略してありますが、現在インストールしていて、このサイトに使用しているプログラムを根こそぎ削除しないとインストールできない!?
困ったもんです。
まあ、こういうことがあるから、本サイトの存在意義もあるわけですが・・・。
試しに、別の試験環境で、「pkg」をインストールして「help」を見てみると
$ certbot --help
-------------------------------------------------------------------------------
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. The most common SUBCOMMANDS and flags are:
obtain, install, and renew certificates:
(default) run Obtain & install a certificate in your current webserver
certonly Obtain or renew a certificate, but do not install it
renew Renew all previously obtained certificates that are near
・・・
-h, --help [TOPIC] print this message, or detailed help on a topic;
the available TOPICS are:
all, automation, commands, paths, security, testing, or any of the
subcommands or plugins (certonly, renew, install, register, nginx,
apache, standalone, webroot, etc.)
-------------------------------------------------------------------------------
ははぁ、「pkg」だとできるわけね。
「pkg」のバージョンを確認してみますと
pkg version -v | grep certbot
py27-certbot-0.18.2,1 < needs updating (index has 0.19.0,1)
うむぅ。ソースを見比べて、手動で書きかえたりもしたのですが、なかなかうまくいかない。
少し調べて(こういうとき、英語文盲は苦労しますなぁ)
「FreshPorts -- security/py-certbot」
これで、試験環境では、「py-certbot」の他に
/usr/ports/security/py-acme
を 「reinstall」するとうまくいくことがわかりました。
本番環境で(出力は省略してあります)以下を実行後に
/usr/ports/security/py-acme
make clean
make
make reinstall
「help」を見ると
$ certbot --help
Traceback (most recent call last):
File "/usr/local/bin/certbot", line 6, in <module>
from pkg_resources import load_entry_point
・・・
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 867, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'ndg-httpsclient; extra == "security"' distribution was not found and is required by requests
これは、さっきの応用だわな、「ndg-httpsclient」を探すのにちょっと手間取りましたが
cd /usr/ports/net/py-ndg_httpsclient
make
make install
で
cd /usr/ports/net/py-ndg_httpsclient
make
make install
して、再度
$ certbot --help
-------------------------------------------------------------------------------
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. The most common SUBCOMMANDS and flags are:
obtain, install, and renew certificates:
(default) run Obtain & install a certificate in your current webserver
certonly Obtain or renew a certificate, but do not install it
renew Renew all previously obtained certificates that are near
・・・
-h, --help [TOPIC] print this message, or detailed help on a topic;
the available TOPICS are:
all, automation, commands, paths, security, testing, or any of the
subcommands or plugins (certonly, renew, install, register, nginx,
apache, standalone, webroot, etc.)
-------------------------------------------------------------------------------
やっとうまくインストールできました。
依存関係がうまく「ports」に反映されていないんだなぁ。
|