インターネット接続には 、OpenWrt仮想マシンを利用してIPoE(v6プラス)で接続しています。
OpenWrtのWebコンソール用のSSL証明書も出力しました。
1. サーバ証明書の作成
プライベートCAのコンソールでサーバ証明書を発行します。「IP:」でOpenwrtのIPアドレスを指定しています。
# ./easyrsa --subject-alt-name="IP:192.168.0.1,DNS:openwrt.oz.exiv.net" build-server-full openwrt.oz.exiv.net nopass
作成した証明書ファイルは、認証局ディレクトリ配下 pkiディレクトリに出力されます。
私の環境では/root/certが認証局のルートです。
/root/cert/pki/private/openwrt.oz.exiv.net.key # プライベートキー(秘密鍵)
/root/cert/pki/issued/openwrt.oz.exiv.net.crt # サーバ証明書
/root/cert/pki/ca.crt # プライベートCA証明書
作成したサーバ証明書を表示します。
# cat /root/cert/pki/issued/openwrt.oz.exiv.net.crt
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
[省略]
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=oz.exiv.net
Validity
Not Before: Jun 11 11:30:40 2024 GMT
Not After : Sep 14 11:30:40 2026 GMT
Subject: CN=openwrt.oz.exiv.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
[途中省略]
5e:f9
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.1, DNS:openwrt.oz.exiv.net
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
[途中省略]
d9:57:d2:f5
-----BEGIN CERTIFICATE-----
MIIDhzCCAm+gAwIBAgIQCteE0FPU40ayYzwNFvbs3zANBgkqhkiG9w0BAQsFADAW
Base64エンコードされたサーバ証明書データ
[途中省略]
27NQPDrx2zQdj9nIQxOfMUIGC+26R94SOP7nfVEY/k/Gv662kFA92VfS9Q==
-----END CERTIFICATE-----
前回のSSL証明書と同様に証明書チェーン形式に整えます。具体には「Base64エンコードされたサーバ証明書データ」と「Base64エンコードされたCA証明書データ」をひとつのファイルにまとめて記述します。
このうち、必要な箇所「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」までのデータ(これは、Base64エンコードされたサーバ証明書です)をクリップボードへコピーしておきます。
続けてOpenwrtに転送するファイル用の作業ディレクトリを作成、証明書チェーンファイルを作成します。
# mkdir /root/openwrt
# vi uhttpd.crt # 証明書チェーンの作成
クリップボードからサーバ証明書のデータをペーストします。
-----BEGIN CERTIFICATE-----
MIIDhzCCAm+gAwIBAgIQCteE0FPU40ayYzwNFvbs3zANBgkqhkiG9w0BAQsFADAW
Base64エンコードされたサーバ証明書データ
[途中省略]
27NQPDrx2zQdj9nIQxOfMUIGC+26R94SOP7nfVEY/k/Gv662kFA92VfS9Q==
-----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 uhttpd.crt 証明書チェーンの再編集
ファイルの最終行へカーソルを移動、クリップボードからプライベートCA証明書のデータをペーストします。
-----BEGIN CERTIFICATE-----
M11DzzCCAregAw1BAg1RA1z1Dyp9rggaZaFclQJzurOwDQYJKoZIhvcNAQELBQAw
Base64エンコードされたサーバ証明書データ
[途中省略]
OBnkJW8gV9xVHEvWYOIURD4Wig==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSzCCAj0gAw1BAg1Uf5Bky9T+XNHshecWcsayUjoIwzowDQYJKoZ1hvcNAQEL
Base64エンコードされたCA証明書データ
[途中省略]
/ApNs19v8eMHJiBSkghKsfhgHIIEZpQ2/q/4Lr7C0g==
-----END CERTIFICATE-----
保存します。
続けてプライベートキーを準備します。Openwrt用のプライベートキーはDER形式に変換する必要があるとのことです。opensslコマンドでDER形式に変換します。
# openssl rsa -in /root/cert/pki/private/openwrt.oz.exiv.net.key \
-outform DER -out /root/openwrt/uhttpd.key # プライベートキーの変換・出力
準備した2つのファイル(uhttpd.keyとuhttpd.crt)は、openwrtへ転送します。scpコマンドでopenwrtのrootディレクトリへコピーしました。
# scp /root/openwrt/uhttpd.* root@192.168.0.1:/root
2. OpenWrtへの証明書インストール
openwrtにsshログイン、ディレクトリへ移動します。現在の証明書とプライベートキーを別名に変更、バックアップとします。
[root@openwrt:/] cd /etc/
[root@openwrt:/etc] mv uhttpd.key uhttpd.key.001
[root@openwrt:/etc] mv uhttpd.crt uhttpd.crt.001
/rootへコピーした証明書ファイル、プライベートキーを/etcにコピーします。
[root@openwrt:/etc] cp /root/uhttpd.* /etc/
ファイルのパーミッションを適宜変更します。私はrootユーザのみ読み書き可能に変更しました。
[root@openwrt:/etc] chmod 600 uhttpd.crt
[root@openwrt:/etc] chmod 600 uhttpd.key
uhttpdを再起動します。
[root@openwrt:/etc] /etc/init.d/uhttpd restart
再起動が完了したら、クライアントPCのWebブラウザからOpenWrt Web管理コンソールにアクセスします。

IPアドレスでブラウザアクセスしても警告表示されないため快適です。
※プライベート認証局のCA証明書は、予めクライアントPCにもインストールしておく必要があります。


コメント