認証局が機能しない


1

私の理解が正しい場合、CAは、FTPサーバー、Webサーバー、Nextcloud、OpenVPNなどのWebサービス用に複数のサーバー証明書をインストールすることなく、CA証明書によって署名された他の証明書を検証するために使用される親証明書のように機能しますサーバーなど?

ローカルネットワークとWAN経由で友人に配布できるCA証明書を作成しようとしているので、友人が自分のサービスの1つにアクセスしようとしても安全に接続できます。たとえば、ホストしている各サービスに複数の証明書を提供する代わりに、CA証明書を提供できます。

各サーバー証明書はCAによって無意識に署名されるため、最初にCAを使用して署名されたため、マシンに1つのCA証明書をインストールすることにより、サーバー証明書が自動的に検証されます。正しい?

問題は、今日、WindowsクライアントPCにCA証明書をインストールしようとし、HTTPS経由でOpenMediaVault GUIにアクセスしようとしたが、まだ安全でない警告画面が表示されることです。

以下のコードブロックは、CAおよびサーバー証明書の作成プロセス全体を示しています。すべてのファイルとフォルダーを確認できるように、ディレクトリツリーのスクリーンショットを含めます。構成ファイルの内容も含めます

マイガイド

# Make OpenSSL Directory
mkdir ~/Desktop/OpenSSL

# Make Child Directories
mkdir -p ~/Desktop/OpenSSL/{ca,configs,"csr's",keys}

# Change Directory Into OpenSSL Directory
cd ~/Desktop/OpenSSL

# Create CA Certificate
openssl req -x509 -newkey rsa:4096 -keyout ca/cakey.pem -out ca/cacert.pem -days 3650 -sha256 -nodes -config configs/ca_openssl.cnf

# Create serial file
echo '01' > serial

# Create index.txt
touch index.txt

##
### Create server certificates ###
##

# OpenMediaVault
openssl genrsa -out keys/OpenMediaVault.pem 4096
openssl req -new -key keys/OpenMediaVault.pem -config configs/openmediavault_openssl.cnf -out "csr's"/OpenMediaVault.csr

# OpenWrt
openssl genrsa -out keys/OpenWrt.pem 4096
openssl req -new -key keys/OpenWrt.pem -config configs/openwrt_openssl.cnf -out "csr's"/OpenWrt.csr

##
### Sign Server Certificates With CA ###
##

# OpenMediaVault
openssl x509 -req -CA ca/cacert.pem -CAkey ca/cakey.pem -in "csr's"/OpenMediaVault.csr -out certificates/OpenMediaVault.crt -extfile configs/openmediavault_openssl.cnf -extensions v3_req -CAserial serial

# OpenWrt
openssl x509 -req -CA ca/cacert.pem -CAkey ca/cakey.pem -in "csr's"/OpenWrt.csr -out certificates/OpenWrt.crt -extfile configs/openwrt_openssl.cnf -extensions v3_req -CAserial serial

# Convert PEM to CRT
openssl x509 -outform der -in ca/cacert.pem -out "My Custom CA".crt

# Convert PEM to PKCS12
openssl pkcs12 -export -out certificate.pfx -inkey ca/cakey.pem -in ca/cacert.pem -certfile CACert.crt

「ca_openssl.cnf」

[ ca ]
default_ca    = CA_default        # The default ca section

[ CA_default ]
dir                   = ~/Desktop/"OpenSSL Certificates"
certs               = $dir/certs
crl_dir               = $dir/crl
database           = $dir/index.txt
new_certs_dir       = $dir/newcerts
certificate        = $dir/cacert.pem
serial             = $dir/serial
crlnumber          = $dir/crlnumber
cr                 = $dir/crl.pem
private_key        = $dir/private/cakey.pem

[ req ]

# Don't prompt for the Domanin Name (DN). Use configured values instead.
# This Saves having to type in your DN each time.

prompt              = no
string_mask         = default
distinguished_name  = req_distinguished_name
x509_extensions     = v3_ca

# The size of the key in bits
default_bits    = 4096

[ req_distinguished_name ]
countryName             = GB
stateOrProvinceName     = SOME_PROVINCE
localityName            = SOME_CITY
organizationName        = domain
organizationalUnitName  = domain
commonName              = domain Certificate Authority
emailAddress            = user@domain.com

[ v3_ca ]
# Extensions added to the request

basicConstraints = critical, CA:TRUE
keyUsage =         critical, keyCertSign, cRLSign

「openmediavault_openssl.cnf」

[ req ]

# Don't prompt for the Domanin Name (DN). Use configured values instead.
# This Saves having to type in your DN each time.

prompt              = no
string_mask         = default
distinguished_name  = req_distinguished_name
req_extensions      = v3_req

# The size of the key in bits
default_bits    = 4096

[ req_distinguished_name ]
countryName             = GB
stateOrProvinceName     = SOME_PROVINCE
localityName            = SOME_CITY
organizationName        = OpenMediaVault
organizationalUnitName  = OpenMediaVault
commonName              = OpenMediaVault.local

[ v3_req ]
# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alternative_names

[ alternative_names ]
DNS.0   = domain.com
IP.0    = 192.168.1.123

「openwrt_openssl.cnf」

[ req ]
# Don't prompt for the Domanin Name (DN). Use configured values instead.
# This Saves having to type in your DN each time.

prompt              = no
string_mask         = default
distinguished_name  = req_distinguished_name
req_extensions      = v3_req

# The size of the key in bits
default_bits    = 4096

[ req_distinguished_name ]
countryName             = GB
stateOrProvinceName     = SOME_PROVINCE
localityName            = SOME_CITY
organizationName        = OpenWrt
organizationalUnitName  = OpenWrt
commonName              = OpenWrt.local

[ v3_req ]
# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alternative_names

[ alternative_names ]
DNS.0   = domain.com
IP.0    = 192.168.1.1

ディレクトリツリー

「/ certificates」ディレクトリから「OpenMediaVault.crt」を、「/ keys」ディレクトリから「OpenMediaVault.pem」をインストールしました。

「certificate.pfx」ファイルは、「My Guide」セクションの最後のコマンドの結果であり、Windows certmgrにインポートされました。Firefoxの認定オプションで「My Custom CA.crt」ファイルを使用しました。

何が間違っていますか?

どうもありがとう

意志

更新1

私は問題の原因を見つけたと思います。https://openmediavault.local(証明書に設定されている共通名)にアクセスすると、「証明書は次の名前に対してのみ有効です」というメッセージが表示されます。追加したsubjectAltNamesです。なぜ代替名は機能するのにCNは機能しないのですか?https://192.168.1.123からアクセスし、Firefoxのアドレスバーに緑色の南京錠があります。 ここに画像の説明を入力してください

更新2

CNをsubjectAltNameに追加すると、すべてが完全に機能することをお知らせします。

OpenSSLに関連する副質問として、OpenVPN証明書をいくつか作成したいと思っています。OpenSSLで作成されたCAはOpenVPN証明書に署名できますか?

回答:


0

はい、SAN(サブジェクトの別名)拡張が存在する場合、ブラウザはCNをもう見ません。これは、RFC 2818のセクションで指定されています。3.1、Chromeは約2年前にこれを実施し始め(Chrome 58)、Firefoxは約3年前に公開された証明書に対して同じことを行いました(Firefox 48)。FirefoxにプライベートCAの例外がまだあるかどうかわかりません。(自分自身を発行する良い仕事のデバッグ、ところで!)

とにかく、SubjectAltNamesで使用するすべての名前で証明書を再発行する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.