SG3210X-M2 Webコンソール用のSSL証明書もプライベートCAから出力しました。
1. Webコンソール用SSL証明書の作成
プライベートCAのコンソールでサーバ証明書を発行します。
「IP:」でSG3210X-M2のIPアドレスを指定します。
# ./easyrsa --subject-alt-name="IP:192.168.0.252,DNS:sg3210x.oz.exiv.net" build-server-full sg3210x.oz.exiv.net nopass
作成した証明書ファイルは、認証局ディレクトリ配下 pkiディレクトリに出力されます。
私の環境では/root/certが認証局のルートです。
/root/cert/pki/private/sg3210x.oz.exiv.net.key # プライベートキー(秘密鍵)
/root/cert/pki/issued/sg3210x.oz.exiv.net.crt # サーバ証明書
/root/cert/pki/ca.crt # プライベートCA証明書
作成したサーバ証明書を表示します。
# cat /root/cert/pki/issued/sg3210x.oz.exiv.net.crt
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
[省略]
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=oz.exiv.net
Validity
Not Before: Jul 9 11:24:17 2024 GMT
Not After : Oct 12 11:24:17 2026 GMT
Subject: CN=sg3210x.oz.exiv.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
[途中省略]
b8:07
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
[途中省略]
X509v3 Authority Key Identifier:
[途中省略]
DirName:/CN=oz.exiv.net
[途中省略]
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Key Usage:
Digital Signature, Key Encipherment
X509v3 Subject Alternative Name:
IP Address:192.168.0.252, DNS:sg3210x.oz.exiv.net
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
[途中省略]
35:a5:fb:66
-----BEGIN CERTIFICATE-----
MIIDiDCCAnCgAwIBAgIRAOg3qPOED0nfKzU+5x/a9cYwDQYJKoZIhvcNAQELBQAw
Base64エンコードされたサーバ証明書データ
[途中省略]
oN7NNfG8XpZgPMppwyJ0sG/wv6Fx/IRsd+PqlTsnySMlgjDgitqP3jWl+2Y=
-----END CERTIFICATE-----
前回のSSL証明書と同様に証明書チェーン形式に整えます。具体には「Base64エンコードされたサーバ証明書データ」と「Base64エンコードされたCA証明書データ」をひとつのファイルにまとめて記述します。
このうち、必要な箇所「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」までのデータ(これは、Base64エンコードされたサーバ証明書です)をクリップボードへコピーしておきます。
続けてSG3210X-M2用の作業ディレクトリを作成、証明書チェーンファイルを作成します。
# mkdir /root/sg3210x
# vi sg3210x.crt # 証明書チェーンの作成
クリップボードからサーバ証明書のデータをペーストします。
-----BEGIN CERTIFICATE-----
MIIDiDCCAnCgAwIBAgIRAOg3qPOED0nfKzU+5x/a9cYwDQYJKoZIhvcNAQELBQAw
Base64エンコードされたサーバ証明書データ
[途中省略]
oN7NNfG8XpZgPMppwyJ0sG/wv6Fx/IRsd+PqlTsnySMlgjDgitqP3jWl+2Y=
-----END CERTIFICATE-----
いったん、保存します。
次にプライベートCA証明書の内容をコンソールに表示します。
# cat /root/cert/pki/ca.crt
-----BEGIN CERTIFICATE-----
MIIDSzCCAj0gAw1BAg1Uf5Bky9T+XNHshecWcsayUjoIwzowDQYJKoZ1hvcNAQEL
Base64エンコードされたCA証明書データ
[途中省略]
/ApNs19v8eMHJiBSkghKsfhgHIIEZpQ2/q/4Lr7C0g==
-----END CERTIFICATE-----
同様に「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」までのデータ(これは、Base64エンコードされたプライベートCA証明書です)をクリップボードへコピーします。
さきほど、保存したファイルに追記します。
# vi sg3210x.crt 証明書チェーンの再編集
ファイルの最終行へカーソルを移動、クリップボードからプライベートCA証明書のデータをペーストします。
-----BEGIN CERTIFICATE-----
MIIDiDCCAnCgAwIBAgIRAOg3qPOED0nfKzU+5x/a9cYwDQYJKoZIhvcNAQELBQAw
Base64エンコードされたサーバ証明書データ
[途中省略]
oN7NNfG8XpZgPMppwyJ0sG/wv6Fx/IRsd+PqlTsnySMlgjDgitqP3jWl+2Y=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSzCCAj0gAw1BAg1Uf5Bky9T+XNHshecWcsayUjoIwzowDQYJKoZ1hvcNAQEL
Base64エンコードされたCA証明書データ
[途中省略]
/ApNs19v8eMHJiBSkghKsfhgHIIEZpQ2/q/4Lr7C0g==
-----END CERTIFICATE-----
保存します。
続けてプライベートキーを準備します。SG3210X-M2用のプライベートキーはRSA形式に変換する必要があるとのことです。opensslコマンドでRSA形式に変換します。
# openssl rsa -in /root/cert/pki/private/sg3210x.oz.exiv.net.key \
-out /root/sg3210x/sg3210x.key # プライベートキーの変換・出力
変換後、出力したRSA形式のプライベートキーのヘッダーとフッターを確認します。
# vi /root/sg3210x/sg3210x.key
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC69R8QhG1nk8bl
[途中省略]
3RGjaGflp3j0ekpg2TbPLHk=
-----END PRIVATE KEY-----
もし、ヘッダーおよびフッターが「BEGIN PRIVATE KEY」「END PRIVATE KEY」として記述されている場合は、これを「BEGIN RSA PRIVATE KEY」「END RSA PRIVATE KEY」にそれぞれ書き換えます。
-----BEGIN RSA PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC69R8QhG1nk8bl
[途中省略]
3RGjaGflp3j0ekpg2TbPLHk=
-----END RSA PRIVATE KEY-----
プライベートキーを変更、上書き保存したら、準備した2つのファイル(sg3210x.keyとsg3210x.crt)は、作業用PCへ転送します。
2. SG3210X-M2への証明書インストール
SG3210X-M2のWebコンソールにログインします。
メニューの[SECURITY]から[Access Security]-[HTTPS Config]をクリックします。
スクロールバーを操作、ページを下方向へスクロールします。

[Load Certificate]で[Browse]をクリック、証明書ファイル(crt)を指定します。

[Load]ボタンをクリックします。

[Download the file?]と確認ダイアログが表示されます。[Yes]をクリックします。
※Upload ではなく Downloadなのは、基準が作業用PCではなく、SG3210X-M2だからだと思います。
おもしろいですね!

Downloadが完了、処理が成功すると[The SSL file downloaded successfully.]とメッセージが表示されます。
OKボタンをクリックします。
同様に[Load Key]からプライベートキーファイルもDownloadします。

証明書・プライベートキーを設定したら、セーブをクリック、装置を再起動します。
再起動が完了したら、クライアントPCのWebブラウザから管理コンソールにアクセスします。
IPアドレスでブラウザアクセスしても警告表示されないため、快適です。

※プライベート認証局のCA証明書は、予めクライアントPCにもインストールしておく必要があります。
3. 最後に
Web管理コンソールはプライベートキーのDownload処理時に、1行目のヘッダー文字列(BEGIN RSA PRIVATE KEY)をチェックしているようです。
最初、ヘッダーを修正せずにプライベートキーを組み込もうとしたところ、正常に処理が完了しませんでした。RSA形式に変換した後、ヘッダーフッターもそれぞれ修正する必要がある点、注意が必要です。
組み込む対象が変わるたびに、操作や設定がいろいろと異なってくるというのは、なかなか難しいものです。
いろいろなパターンがありますね。この手の設定内容や操作、ぜったいに忘れるので、最近、こうして備忘録として記録を残すようにしています。
easy-rsaは扱いが簡単で便利ですね。opensslコマンドと併用ができるので、さまざまな要求にも柔軟に対応することができます。このプライベートCAは、openvpn構築時に設定したものですが、openvpnのユーザ証明書発行だけではなく、いろいろな機器にもSSL証明書が発行できるので、とても気に入っています。


コメント