Posted on Sat Jun 28 16:02:42 +0900 2008 by nabeken
v6対応もひとまず落ちついたので、SSL の証明書を共有できるか調べてみました。これが可能になると、certmaster の代わりにこれまでに展開してきた Puppet の証明書が使えるようになります。
まだ本家には取りまれていない機能を使っているので、試したい方は私が投稿したメールを見て、試してください。https://www.redhat.com/archives/func-list/2008-June/msg00062.html(パッチが mailman に食われたので、githubから取得してください。まだ本家には投げていませんが、IPv6対応パッチも入っています。)
Func の CA の秘密鍵は passphase を抜いているようです。
Puppet の CA の秘密鍵は passphase 付きのようで、そのパスは $vardir/ssl/ca/private/ca.pass に保存されています。何か特殊なファイルかと思ったのですが、ただのテキストファイルです。末尾に改行がないので、cat するとちょっと変ですが…。
Func で使う証明書を Puppet のものに合せることにします。Funcはまだまだハードコードされた値が多いため、今後も仕様がころころ変わることが予想されます。
Func に合せて、リンクの生成、そして、証明書の秘密鍵の passphase を抜きます。
# cd /var/lib/puppet/ssl/ca # openssl rsa -in ca_key.pem -out ca_key_nopassphase.pem -passin file:private/ca.pass # ln -s ca_key_nopassphase.pem certmaster.key # ln -s ca_crt.pem certmaster.crt
そして、 /etc/certmaster/certmaster.conf を設定します。
cert_extension = pem cadir = /var/lib/puppet/ssl/ca certroot = /var/lib/puppet/ssl/ca/signed
専用のディレクトリを作り、そこへリンクを集めます。こうすることで、minion.confへの設定を楽にできます。
# cd /var/lib/puppet/ssl # mkdir func && cd func # ln -s ../certs/ca.pem ca.cert # ln -s ../certs/${HOSTNAME}.pem ${HOSTNAME}.cert # ln -s ../csr_${HOSTNAME}.pem ${HOSTNAME}.csr # ln -s ../private_keys/${HOSTNAME}.pem
そして、 /etc/certmaster/minion.conf を設定します。
cert_dir = /var/lib/puppet/ssl/func
puppetd 側で funcd を起動させます。これで、 puppetmasterd が動いているマシンから func で指示を出すことができるようになります。
# func func.example.org command run 'uname -a' on https://func.example.org:51234 running command run (uname -a) [0, 'Linux func.example.org 2.6.18-53.1.21.el5 #1 SMP Tue May 20 09:34:18 EDT 2008 i686 i686 i386 GNU/Linuxn', '']