freeDiameterdのインストール記録 第2回
freeDiameterdのインストール記録 第1回の続きです。第1回ではインストールまで行いましたが、今回は設定です。
■SSL証明書・秘密鍵作成■
このままでは起動時に「SSLの証明書と鍵がない」と怒られてしまい起動できません。SSL関連のファイルを作成する必要があります。
流れとしてはこのようになります。
---------------------------------
1.openssl.cnf修正、CA用ディレクトリ・ファイル作成
2.オレオレCAの証明書・秘密鍵作成
3.オレオレCAの秘密鍵からパスフレーズを外す
4.サーバのCSRと秘密鍵作成
5.サーバの秘密鍵からパスフレーズを外す
6.オレオレCAの秘密鍵でサーバのCSRにサインしてサーバの証明書を作成
---------------------------------
具体的にコマンドで示します。
1.openssl.cnf修正、CA用ディレクトリ・ファイル作成。既存のdirディレクティブをコメントアウトし書き換えます。
[root@localhost 20140304]# vi /etc/pki/tls/openssl.cnf
dir = /etc/pki/CA # Where everything is kept
↓
#dir = /etc/pki/CA # Where everything is kept
dir = .
[root@localhost ~]# mkdir /home/hiro/test/ssl/20140304 -p; cd /home/hiro/test/ssl/20140304
[root@localhost 20140304]# mkdir private
[root@localhost 20140304]# mkdir newcerts
[root@localhost 20140304]# mkdir csr_key
[root@localhost 20140304]# touch index.txt
[root@localhost 20140304]# echo 01 > serial
2.オレオレCAの証明書・秘密鍵作成
[root@localhost 20140304]# openssl req -new -x509 -newkey rsa:512 -out cacert.pem -keyout private/cakey-pass.pem
Generating a 512 bit RSA private key
........++++++++++++
.....++++++++++++
writing new private key to 'private/cakey-pass.pem'
Enter PEM pass phrase: (←例えば1234等のパスフレーズを入力)
Verifying - Enter PEM pass phrase: (再度入力)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:a
Locality Name (eg, city) [Default City]:a
Organization Name (eg, company) [Default Company Ltd]:a
Organizational Unit Name (eg, section) []:a
Common Name (eg, your name or your server's hostname) []:root.hiro.local
Email Address []:
3.オレオレCAの秘密鍵からパスフレーズを外す
[root@localhost 20140304]# openssl rsa < private/cakey-pass.pem > private/cakey.pem
Enter pass phrase: (←上記で入力した1234等のパスフレーズを入力)
writing RSA key
4.サーバのCSRと秘密鍵作成
[root@CentOS65_124 20140304]# openssl req -new -newkey rsa:512 -keyout csr_key/serv01-pass.key -out csr_key/serv01.csr
Generating a 512 bit RSA private key
....++++++++++++
......................++++++++++++
writing new private key to 'csr_key/serv01-pass.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:a
Locality Name (eg, city) [Default City]:a
Organization Name (eg, company) [Default Company Ltd]:a
Organizational Unit Name (eg, section) []:a
Common Name (eg, your name or your server's hostname) []:centos65ip124.hiro.local
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
5.サーバの秘密鍵からパスフレーズを外す
[root@localhost 20140304]# openssl rsa < csr_key/serv01-pass.key > csr_key/serv01.key
Enter pass phrase: (←上記で入力した1234等のパスフレーズを入力)
writing RSA key
6.オレオレCAの秘密鍵でサーバのCSRにサインしてサーバの証明書を作成
[root@CentOS65_124 20140304]# openssl ca -in csr_key/serv01.csr -out newcerts/serv01.crt
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 2 (0x2)
Validity
Not Before: Mar 3 23:02:55 2014 GMT
Not After : Mar 3 23:02:55 2015 GMT
Subject:
countryName = JP
stateOrProvinceName = a
organizationName = a
organizationalUnitName = a
commonName = centos65ip124.hiro.local
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
4F:4C:2F:BA:83:70:BB:ED:33:E7:4E:00:5F:83:08:3E:B6:87:40:C5
X509v3 Authority Key Identifier:
keyid:4A:44:DE:99:B9:7D:14:36:90:D6:09:0F:74:1A:A9:AD:FC:85:EB:13
Certificate is to be certified until Mar 3 23:02:55 2015 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
■作成したSSLファイルへのパスを設定■
作成したSSL関連ファイルへのパスをfreeDiameter.confに書き込みます。
[root@localhost 20140304]# vi /usr/local/etc/freeDiameter/freeDiameter.conf
既存のディレクティブはコメントアウトし、下記のように書き換えます。
Identity = "centos65ip124.hiro.local";
Realm = "hiro.local";
TLS_Cred = "/home/hiro/test/ssl/20140304/newcerts/serv01.crt", "/home/hiro/test/ssl/20140304/csr_key/serv01.key";
TLS_CA = "/home/hiro/test/ssl/20140304/cacert.pem";
■単体での起動確認■
起動するとこのようにログが出て「initialized」と表示されます。
[root@centos65ip124 ~]# /usr/local/bin/freeDiameterd
03/04/14,08:24:18.282468 NOTI libfdproto '1.2.0' initialized.
03/04/14,08:24:18.297934 NOTI libgnutls '2.8.5', libgcrypt '1.4.5', initialized.
...
03/04/14,08:24:20.750029 NOTI freeDiameterd daemon initialized.
ポート3868番が開きます。
[root@centos65ip124 ~]# netstat -ant | grep 3868
tcp 0 0 0.0.0.0:3868 0.0.0.0:* LISTEN
tcp 0 0 :::3868 :::* LISTEN
確認後はCtrl+Cで終了しておきましょう。
■serviceスクリプト作成■
簡単ではありますが、startとstopにだけ対応するserviceスクリプトを作成しました。
chkconfig設定にも対応しています。
[root@centos65ip124 ~]# vi /etc/init.d/freeDiameterd
#!/bin/bash
#
# chkconfig: - 27 73
# description: freeDiameterd
case "$1" in
start)
export LD_LIBRARY_PATH=/usr/local/lib
/usr/local/bin/freeDiameterd > /var/log/freeDiameterd &
;;
stop)
killall freeDiameterd > /var/log/freeDiameterd
;;
esac
[root@centos65ip124 ~]# chmod 744 /etc/init.d/freeDiameterd
[root@centos65ip124 ~]# service freeDiameterd start
[root@centos65ip124 ~]# chkconfig freeDiameterd on
デーモンのログは /var/log/freeDiameterd に出力されるようにしましたので、トラブルシューティングの際にはここを見るとよいでしょう。
次回はクライアントとサーバを通信させます。