SSL をインストールする必要があるイントラネット サーバーがあります。
これはopenssl.cnf
[ req ]
default_md = sha256
distinguished_name = req_distinguished_name
attributes = req_attributes
req_extensions = req_ext
#prompt = no
[ req_distinguished_name ]
countryName = US
countryName_min = 2
countryName_max = 2
stateOrProvinceName = CHICAGO
localityName = CHICAGO
0.organizationName = MY COMPANY
organizationalUnitName = IOS DEVELOPMENT
commonName = server2.myserver.local
commonName_max = 64
emailAddress = [email protected]
emailAddress_max = 64
[ req_attributes ]
challengePassword = password
challengePassword_min = 4
challengePassword_max = 20
[ req_ext ]
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
DNS.1 = server2.myserver.local
DNS.2 = myserver.local
これは私がこれを作成するために使用しているコマンドです。
ルートCAキーの生成
openssl genrsa -des3 -out rootCA.key 4096
2.ルートCA証明書を生成します
openssl req \
-x509 -new -nodes \
-key rootCA.key -sha256 \
-days 825 \
-out rootCA.crt \
-subj /CN=server2.myserver.local \
-reqexts SAN \
-extensions SAN \
-config <(cat ./openssl.cnf \
<(printf '[SAN]\nsubjectAltName=DNS:server2.myserver.local')) \
-extensions 'req_ext'
証明書キーの生成
openssl genrsa -out mydomain.com.key 4096
証明書を生成する
openssl req -new -sha256 -key mydomain.com.key \ -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=server2.myserver.local" \ -reqexts SAN \ -config <(cat ./openssl.cnf \ <(printf "\n[SAN]\nsubjectAltName=DNS:server2.myserver.local,DNS:myserver.local")) \ -out mydomain.com.csr
CA証明書をp12に変換する
openssl pkcs12 -export -out ca.p12 -inkey rootCA.key -in rootCA.crt
証明書をp12に変換する
openssl pkcs12 -export -out certificate.p12 -inkey mydomain.com.key -in mydomain.com.crt
次に、IIS サーバーとデバイスにインストールしca.p12
ますcertificate.p12
。
訪問しようとするとserver2.myserver.local
私は
聖人証明書の名の下に、それをどうやって行うのでしょうか?
答え1
ルート CA 証明書は完全に間違っていると思います。CA 証明書はエンド ホスト TLS 証明書とは大きく異なります。両方に同じ構成を使用することはできません。
件名にサーバーのドメインを入れないでください。役に立ちません。CA の場合は、単に
CN=My internal CA
そのようにすればよいだけです。拡張子を追加します
basicConstraints
。証明書が CA であることを示す必要があります。正しいものを追加してください
keyUsage
。「keyCertSign」と(完全性のため)「cRLSign」が必要です。を追加しないでください
subjectAltName
。証明書は認証局/発行者用であり、サーバー用ではありません。を追加しないでください
extendedKeyUsage
。CA が発行できる証明書を制限するために使用されることもありますが、この複雑さなしで開始する方がよいでしょう。後で同一のサブジェクト DN を持つ複数の内部 CA が存在する場合に備えて、を追加することをお勧めします
subjectKeyIdentifier
。(通常、CA DN は一意である必要がありますが、SKI/AKI を使用すると、この点が緩和されます。)
したがって、次のような「CA」構成ファイルが必要になります (コマンド ラインから SAN やその他のものを追加するのはやめてください。それが構成の目的です)。
[ req ]
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_dn ]
countryName = US
stateOrProvinceName = Chicago
organizationName = Company Name
organizationalUnitName = iOS development
commonName = Internal development CA
[ req_ext ]
basicConstraints = critical, CA:TRUE
keyUsage = keyCertSign, cRLSign
subjectKeyIdentifier = hash
一方、エンド エンティティ証明書 (TLS サーバー) には次の拡張機能が必要です。
...
[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid, issuer
subjectAltName = DNS:server2.myserver.local
次に、IIS サーバーとデバイスに ca.p12 と certificate.p12 をインストールします。
CA の秘密鍵をデバイスにインストールしないでください。サーバーにもインストールしないでください。のみCA 証明書rootCA.crt
(公開部分) のみ。他には何もありません。
私の最後のアドバイス:生のCAを作ろうと時間を無駄にしないでくださいopenssl
。代わりに簡単RSA(OpenVPNに付属のもの)、またはエクセレント(グラフィカルLinuxアプリ)、またはおそらく数十すでに作成されテストされたプログラムの。