開発環境などでよく使うオレオレ証明書ですが、上記のように警告が出ます。
この警告を出ないようにするための手順です。
Java(SpringBoot)で作成したWebアプリに適用したかったのでそちらの手順も書いておきます。
証明書作成
ちょっと開発環境のOpenSSLが古いですが以下が使用バージョンです。
# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
証明書作成のための設定ファイルを作成します。
commonName、DNS.1は自分の環境に合わせて設定してください。
# vim openssl.cnf
[ req ]
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
commonName = sample.com
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.sample.com
秘密鍵、署名要求(csr)、証明書(crt)を生成します。
# openssl genpkey -out web-server.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
.........+++
......+++
# openssl req -new -key web-server.key -out web-server.csr -config openssl.cnf
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.
-----
sample.com []:sample.comを入力してエンター
# openssl x509 -req -in web-server.csr -out web-server.crt -signkey web-server.key -days 3650 -extfile openssl.cnf -extensions req_ext
Signature ok
subject=/CN=sample.com
Getting Private key
上記コマンドを実行すると以下が作成されます。
# ls -l
-rw-r--r-- 1 root root 216 Jan 15 23:21 openssl.cnf
-rw-r--r-- 1 root root 1038 Jan 15 23:56 web-server.crt
-rw-r--r-- 1 root root 956 Jan 15 23:53 web-server.csr
-rw-r--r-- 1 root root 1708 Jan 15 23:53 web-server.key
SpringBootで使用するJKSを作成する
Spring BootでSSLを設定するためには、Java KeyStore (JKS) 形式のキーストアファイルが必要です。
すでに作成した証明書(web-server.crt)と秘密鍵(web-server.key)を使用して、JKS形式のキーストアファイルを生成します。
まず、証明書と秘密鍵をPKCS12形式の一時キーストアにインポートします。
このコマンドを実行すると、パスワードを求められます。このパスワードは後でJKSキーストアを作成する際にも使用します。
ここでは changeit を使用します。
# openssl pkcs12 -export -in web-server.crt -inkey web-server.key -name mykeyalias -out temp.p12
Enter Export Password: changeitを入力してエンター
Verifying - Enter Export Password: changeitを入力してエンター
次に、Javaのkeytoolコマンドを使用して、PKCS12形式の一時キーストアからJKS形式のキーストアを作成します。
このコマンドを実行すると、JKSキーストアのパスワード(こちらもchangeitを使用)を求められます。ここでも先ほど設定したパスワード(changeit)を使用します。
# keytool -importkeystore -destkeystore keystore.jks -srckeystore temp.p12 -srcstoretype pkcs12 -alias aliaskey
キーストアtemp.p12をkeystore.jksにインポートしています...
出力先キーストアのパスワードを入力してください: changeitを入力してエンター
新規パスワードを再入力してください: changeitを入力してエンター
ソース・キーストアのパスワードを入力してください: changeitを入力してエンター
作成したJKSファイルをapplication.propertiesに設定します。なお、JKSファイルはsrc/main/resourcesの直下に配置します。
# 証明書
server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=changeit
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=aliaskey
ブラウザ(chrome, Edge)の信頼されたルート証明機関にインポートする
最後にブラウザの設定です。
設定時のchromeのバージョンは 120.0.6099.217 です。
- 設定を開き、サイドメニューからプライバシーとセキュリティを選択
- 証明書の管理を選択
- 信頼されたルート証明機関タブを選択
- インポートで作成した web-server.crt を選択してインポート
- ブラウザを再起動(chrome://restart)
これでオレオレ証明書でも警告が出なくなります。
コメント