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

5 件のコメント:

  1. コマンド'make server.key'を実行すればopenssl.cnfが作成され、そのままopenssl.cnfの編集に続くのでしょうか?
    それとも、openssl.cnfを編集するためのコマンドを別途実行する必要があるのでしょうか?

    返信削除
    返信
    1. openssl.cnfは、'make server.key'とは関係なくデフォルトで存在する設定ファイルとなります。vi等で修正を実施する必要があります。

      削除
    2. 追加の質問で恐縮ですが、openssl.cnfの編集はシステムにどのような影響を及ぼすのでしょうか?

      削除
  2. opensslコマンドの動作に影響するものと思います。不安であれば、影響の少ないサーバを使うか、証明書作成後、設定値を戻せば良いと思います。

    返信削除
  3. ご回答ありがとうございました。

    返信削除

人気の投稿