ネットワークエンジニアから着物屋さんとして独立しました。ネットショップのIT面を中心にお伝えします

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 に出力されるようにしましたので、トラブルシューティングの際にはここを見るとよいでしょう。

 次回はクライアントとサーバを通信させます。

Comment(0)

コメント

コメントを投稿する