
https localhost で Web アプリをテストしたいのですが、残念ながら Chrome から証明書の警告を削除するのは不可能のようです。まず、次のように証明書を生成しました。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/localhost-selfsigned.key -out /etc/ssl/certs/localhost-selfsigned.crt
次に、Chrome に追加したいのですが、設定 > 詳細設定 > 証明書の管理 -> インポートです。以前生成された .crt ファイルをインポートしようとすると、次のメッセージが表示されます。
証明書のインポート エラー: このクライアント証明書の秘密キーが見つからないか無効です。
グーグルで検索しましたが、役に立つものは何も見つかりませんでした。
また、allow-insecure-localhostフラグを有効にしてChromeを開こうとしましたが--ignore-certificate-errors
、警告が表示され、httpsが壊れています。
他に方法はあるのでしょうか、それとも証明書に何か問題があるのでしょうか?
答え1
あなたがやろうとしているのは、「あなたの証明書」の下でそれを追加しようとすることです。
あなたの説明から判断すると、あなたがやりたいことは、ブラウザがサーバー側にある自己署名証明書を信頼することだと思います。その場合は、「認証局」タブにそれを追加する必要があります。
答え2
私にとって効果があったのは
- CAの設定
- このCAを使用して自分の証明書に署名し、
- CA キーを Chrome (Authorities) にインポートします。
私は手順をこれSO で回答します。
私の具体的な問題は、マルチレベルサブドメインに対応することだったので、その観点から検討します。
サブドメイン:
- bar.fooz.mydomain.com
- foo.fooz.mydomain.com
- 認証局になる
export CA=myca
# you probably want to have this in its own directory
mdkir /etc/ssl/$CA && cd /etc/ssl/$CA
# generate private key
openssl genrsa -des3 -out $CA.key 2048
# generate root certificate
openssl req -x509 -new -nodes -key $CA.key -sha256 -days 825 -out $CA.pem
- CA署名証明書を作成する
export NAME=fooz.mydomain.com
# if CA files were in a separate directory
cd .. && mkdir /etc/ssl/$NAME && cd /etc/ssl/$NAME
# generate private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
# Once prompted, set FQDN to the value of $NAME
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
# Optionally, add additional domains (I've added a subdomain here)
DNS.2 = foo.$NAME
DNS.3 = bar.$NAME
IP.1 = 192.168.0.13 # (Optional, but probably important), add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA $CA.pem -CAkey $CA.key -CAcreateserial -out $NAME.crt -days 825 -sha256 -extfile $NAME.ext
- ファイルをダウンロードし
$CA.pem
、ブラウザで Authority としてインポートします。
1. Chrome settings (Settings > Privacy and Security > Security > Manage certificates > Authorities > Import). Check Trust this certificate for identifying websites
2. Firefox: Preferences > Privacy and Security > Certificates > View Certificates > Authorities > import. Check Trust this CA to identify websites
- ブラウザを再起動します(Firefoxは再起動しなくても動作しました)
答え3
Chrome では、証明書、中間証明書、および秘密鍵を 1 つの暗号化可能なファイルに保存するために使用される PKCS12 形式のファイルが必要です。これらのファイルは通常、拡張子が および.p12
です.pfx
。
生成するには以下のコマンドを使用します
openssl pkcs12 -export -inkey ./sample.key -in ./sample.crt -out ./sample.p12
このコマンドはパスワードを要求します。このパスワードは覚えておき、生成されたp12
ファイルを Chrome にインポートするときに使用する必要があります。