2015年2月6日金曜日

Brocade Web Toolsでhttpsを有効化する方法

BrocadeのSANスイッチでWeb Toolsを使う場合、標準ではHTTP通信でアクセスする必要がある。セキュリティの観点から通信暗号化しておこうということで、オレオレ証明書をインストールしてHTTPS通信を有効にする方法を調べて、実際にやってみた。

なお、SANスイッチのFabric OSのバージョンは7.0.0c。

有効化手順

結構手順が多くて面倒だが、以下の通り対応していけば良い。

公開鍵と秘密鍵のキーペアを作成

作業は全てSANスイッチのコマンドで実施する。まずはスイッチ内に公開鍵と秘密鍵のキーペアを作成するため"secCertUtil genkey"コマンドを実行すると、キーを作成する際に4点自動処理されると注意書きが表示される。

1. CSRを全て削除
2. 証明書を全て削除
3. 証明書のファイル名をリセット
4. HTTPS無効化

要するにキー再作成によって全ての証明書情報は削除されるので、一から証明書をインストールし直す必要が発生する。今回はそもそも一から入れるつもりなので問題なし。
SANSW:admin> secCertUtil genkey
Generating a new key pair will automatically do the following:
1. Delete all existing CSRs.
2. Delete all existing certificates.
3. Reset the certificate filename to none.
4. Disable secure protocols.

Continue (yes, y, no, n): [no] yes
Select key size [1024 or 2048]: 1024
Generating new rsa public/private key pair
Done.
SANSW:admin>

CSR(Certificate Signing Request)を作成

CSRを作成する。どうせオレオレ証明書で作成するので項目は適当でも良い。必須項目は"Country"、"Common Name"のみ。
SANSW:admin> secCertUtil gencsr
Country Name (2 letter code, eg, US):JP
State or Province Name (full name, eg, California):Tokyo
Locality Name (eg, city name):Minato-ku
Organization Name (eg, company name):hoge
Organizational Unit Name (eg, department name):hoge
Common Name (Fully qualified Domain Name, or IP address):192.168.2.6
Generating CSR, file name is: 192.168.2.6.csr
Done.
SANSW:admin>
なお、"secCertUtil showcsr"コマンドで作成したCSRの内容を出力できる。
SANSW:admin> secCertUtil showcsr
verify OK
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP, ST=Tokyo, L=Minato-ku, O=hoge, OU=hoge, CN=192.168.2.6
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d6:5a:4c:c6:0b:e0:b3:de:8c:12:98:88:65:1b:
                    54:da:2c:28:da:2b:b1:9a:dd:bd:a7:f9:e8:f7:92:
                    37:16:99:d8:d4:cf:ba:71:d9:8a:52:55:c4:ef:6e:
                    d2:6b:da:04:5d:38:23:93:dc:bb:66:29:98:b6:00:
                    64:3d:a0:4d:26:62:39:a3:40:a8:95:6d:81:05:1f:
                    d6:3f:1d:6b:9f:86:b3:90:5e:e7:2c:31:1d:14:00:
                    c4:86:02:ab:44:f2:77:c8:6a:4d:00:39:67:e3:d6:
                    94:7d:0f:ce:08:3c:a1:5b:79:4e:c7:26:d3:b5:96:
                    a6:3a:d4:2d:2c:fc:b7:4d:d3
                Exponent: 65537 (0x10001)
        Attributes:
            serialNumber             :10:00:00:27:f8:4c:13:88
        Requested Extensions:
            X509v3 Subject Alternative Name:
                DNS:192.168.2.6, IP Address:192.168.2.6
    Signature Algorithm: sha1WithRSAEncryption
        19:33:02:6d:a2:89:ed:25:03:58:67:f6:96:51:cd:03:dc:35:
        e3:4c:1e:4c:66:08:e0:52:23:40:97:3a:88:7c:df:ad:4c:bf:
        d2:a9:06:c8:85:b2:ea:b0:87:75:60:0c:35:9d:d2:9f:10:5b:
        0c:86:05:56:b3:bc:39:e2:9e:ae:40:d8:42:0a:c0:fe:41:ff:
        60:ad:a0:c2:01:25:02:7e:cf:26:40:c7:6a:41:2e:b3:25:81:
        d9:c6:94:b9:62:ec:0c:db:03:06:40:fb:5c:6b:38:f6:a9:ef:
        04:9a:46:00:55:62:19:f7:3e:ca:bf:86:76:97:0b:77:4f:b2:
        bd:99

CSR contents in base64 format

-----BEGIN CERTIFICATE REQUEST-----
MIIB/DCCAWUCAQAwaDELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMRIwEAYD
VQQHEwlNaW5hdG8ta3UxDTALBgNVBAoTBGhvZ2UxDTALBgNVBAsTBGhvZ2UxFzAV
BgNVBAMTDjE5Mi4xNjguMjQ3LjYyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDWWkzGC+Cz3owSmIhlG1TaLCjaK7Ga3b2n+ej3kjcWmdjUz7px2YpSVcTvbtJr
2gRdOCOT3LtmKZi2AGQ9oE0mYjmjQKiVbYEFH9Y/HWufhrOQXucsMR0UAMSGAqtE
8nfIak0AOWfj1pR9D84IPKFbeU7HJtO1lqY61C0s/LdN0wIDAQABoFQwIAYDVQQF
MRkTFzEwOjAwOjAwOjI3OmY4OjRjOjEzOjg4MDAGCSqGSIb3DQEJDjEjMCEwHwYD
VR0RBBgwFoIOMTkyLjE2OC4yNDcuNjKHBMCo9z4wDQYJKoZIhvcNAQEFBQADgYEA
GTMCbaKJ7SUDWGf2llHNA9w140weTGYI4FIjQJc6iHzfrUy/0qkGyIWy6rCHdWAM
NZ3SnxBbDIYFVrO8OeKerkDYQgrA/kH/YK2gwgElAn7PJkDHakEusyWB2caUuWLs
DNsDBkD7XGs49qnvBJpGAFViGfc+yr+GdpcLd0+yvZk=
-----END CERTIFICATE REQUEST-----

SANSW:admin>

CSRのエクスポート

CSRを使ってサーバー証明書を作成するため、一旦外部のサーバーへExportする。以下では192.168.2.8のサーバーの/tmpにCSRをエクスポートする。CSRは<SANスイッチのIPアドレス>.csrというファイル名で出力される。
SANSW:admin> secCertUtil export
Select protocol [ftp or scp]: scp
Enter IP address: 192.168.2.8
Enter remote directory: /tmp
Enter Login Name: root
root@192.168.2.8's password:
Success: exported CSR.
SANSW:admin>

CSRを使ってサーバー証明書(オレオレ証明書)を作成

ここからはLinuxサーバーで作業する。コマンドを打つたびにpass phraseを求められるかもしれないが、全部同じものを入れておけばOKと思われる。

Linuxサーバー自身の秘密鍵を作成する。
# cd /etc/pki/tls/certs
# make server.key
/etc/pki/tls/openssl.cnfを修正する。basicConstraintsの設定は、証明書にCAの情報を含めるようにする設定?らしい。ここは良くわかっていないが、設定しないと作ったサーバー証明書がインストールできない場合があるらしい…。
basicConstraints=CA:FALSE
→basicConstraints=CA:TRUE
証明書の有効期限を10年に変更する。
default_days    = 365
→default_days    = 3650
以上でopenssl.cnfの設定は終わり。LinuxサーバーにCAとしての設定を投入する。/etc/pki/tls/miscにあるCAスクリプトを使う。
# cd /etc/pki/tls/misc
# ./CA -newca
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Minato-ku
Organization Name (eg, company) [My Company Ltd]:Private_CA
Organizational Unit Name (eg, section) []:CertificationAuthority
Common Name (eg, your name or your server's hostname) []:Private_CA
Email Address []:webmaster@example.com
SANスイッチのCSRに対して署名しサーバー証明書を作成する。newcert.pemがサーバー証明書となる。
# cp /tmp/192.168.2.6.csr newreq.pem
# ./CA -sign
# ls -l *.pem
-rw-r--r-- 1 root root 3312  7月 17 11:37 newcert.pem
-rw------- 1 root root  712  7月 17 11:37 newreq.pem
拡張子はpemのまま、適当なディレクトリに配置する(拡張子をcrtとかに変えると、「Bad format certificate」のエラーが出て証明書のImportに失敗するので注意)。
# cp newcert.pem /tmp/192.168.2.6.pem

サーバー証明書のインポート

SANスイッチに戻って、サーバー証明書をImportする。この作業が完了すれば、HTTPS通信にてWeb Toolsにアクセスできるようになる。
SANSW:admin> seccertutil import -config swcert -enable https
Select protocol [ftp or scp]: scp
Enter IP address: 192.168.2.8
Enter remote directory: /tmp
Enter certificate name (must have ".crt" or ".cer" ".pem" or ".psk" suffix):192.168.2.6.pem
Enter Login Name: root
root@192.168.2.8's password:
Success: imported certificate [192.168.2.6.pem].
Certificate file in configuration has been updated.
Secure http has been enabled.
SANSW:admin>

参考URL

Brocade マニュアル
・Fabric OS Administrator's Guide, 7.0.0 [英語:PDF] P.124
・Fabric OS Command Reference, 7.0.0 [英語:PDF] P.867
http://www.brocadejapan.com/resource-center/manual