自分のCAルート証明書に基づいてエンドエンティティ証明書を生成する方法を教えてください。私はこの方法でルートCAを生成しました:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout example.key -out example.crt -subj /CN=MyCompany \
-addext subjectAltName=IP:192.168.100.82
openssl pkcs12 -export -out cert.pfx -inkey example.key -in example.crt
CerファイルをWindows Trusted Root Certification Authoritiesにインポートし、pfxファイルをIISサーバー証明書にインポートしました。
これはChrome、IEおよびEdgeでうまく機能しますが、Firefoxは私の証明書に問題を報告しています:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY
私はそれをググりました、そして、私は私のCAルート証明書によって署名されたエンドエンティティ証明書を持っているべきであることを学びました。私はエンドエンティティ証明書を生成しようとしていました:
openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr -subj /CN=MyCompanyEE -addext subjectAltName=IP:192.168.100.82
openssl x509 -req -in server.csr -CA cert.pem -CAkey example.key -CAcreateserial -out server.crt -days 3650 -sha256
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
OpenSSL応答:
Signature ok
subject=CN = MyCompanyEE
Getting CA Private Key
Server.pfxをIISサーバー証明書にもインポートし、サーバー証明書を使用するようにWebアプリのバインディングを変更しましたが、FirefoxとChromeのどちらでも機能しません。
Firefoxは言う:SSL_ERROR_BAD_CERT_DOMAIN、
Chromeは言う:NET :: ERR_CERT_COMMON_NAME_INVALID。
私は何を間違っていますか?
ローカルWebサイト用のOpenSSL(イントラネットの192.168.100.82:997で利用可能)で証明書を生成できなかったため、@ Crypt32のアドバイスに従って、アプローチを変更してPowerShellを使用しました。以下の私の実用的な解決策を見つけることができます:
以下のコードを使用して、自己署名ルート認証局(MyCompany CA)およびサーバー(MyCompany)証明書を生成します。
$authorityCert = New-SelfSignedCertificate `
-Subject "CN=MyCompany CA,OU=IT,O=MyCompany Certificate Authority,C=US" `
-KeyAlgorithm RSA `
-KeyLength 4096 `
-KeyUsage CertSign, CRLSign, DigitalSignature, KeyEncipherment, DataEncipherment `
-KeyExportPolicy Exportable `
-NotBefore (Get-Date) `
-NotAfter (Get-Date).AddYears(10) `
-HashAlgorithm SHA256 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-FriendlyName "MyCompany CA" `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1", "2.5.29.19={critical}{text}ca=1")
$devCert = New-SelfSignedCertificate `
-Subject "CN=MyCompany,OU=App Test,O=MyCompany,C=US" `
-KeyAlgorithm RSA `
-KeyLength 4096 `
-KeyUsage DigitalSignature, KeyEncipherment, DataEncipherment `
-KeyExportPolicy Exportable `
-NotBefore (Get-Date) `
-NotAfter (Get-Date).AddYears(10) `
-HashAlgorithm SHA256 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-FriendlyName "MyCompany" `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1", "2.5.29.17={text}IPAddress=192.168.100.82") `
-Signer $authorityCert
$directory = "C:\Users\bug_2\Certificates\"
if(!(test-path $directory))
{
New-Item -ItemType Directory -Force -Path $directory
}
$authorityCertPath = 'Cert:\LocalMachine\My\' + ($authorityCert.ThumbPrint)
$authorityCertFilename = $directory + "Authority.cer"
Export-Certificate -Cert $authorityCertPath -FilePath $authorityCertFilename
$devCertPath = 'Cert:\LocalMachine\My\' + ($devCert.ThumbPrint)
$devCertFilename = $directory + "Dev.cer"
Export-Certificate -Cert $devCertPath -FilePath $devCertFilename
WIN + Rを押して、システムの信頼されたルート証明機関にルート証明書を追加し、次のように入力します:mmc、Enterキーを押します。 Microsoft Management ConsoleでFile->Add or Remove Snap-ins
を選択し、次に新しいウィンドウでCertificates -> Add -> OK
を選択します。 Certificates->Trusted Root Certification Authorities
を展開します。 Certificatesカタログを右クリックして、Trusted Root Certification Authorities内に配置し、All Tasks->Import...
を選択して、Authority.cer
ファイルを選択しますC:\Users\bug_2\Certificates\
から。変更を適用してMicrosoft管理コンソールを閉じます。
IIS)で新しい証明書(ルートとサーバー)を見つけることができます。追加の手順は必要ありません。IISでWebサイトを選択し、Bindings...->Edit
をクリックしてサーバー証明書(MyCompany)を選択します。変更を適用します。
私のWebサイトは、Firefoxを除くすべてのWebブラウザー(Chrome、IE、Edgeなど)のhttps://192.168.100.82:997
で利用できます。 Firefoxを実行する修正プログラムについては、アドレスバーにabout:config
と入力し、security.enterprise_roots.enabled
をtrueに設定します。 Firefoxを再起動します。
これで私のローカルWebサイトはイントラネットの https://192.168.100.82:997 で利用できます。