私自分だけの認証機関になってみてください。次のチュートリアルを完了した後:https://jamielinux.com/docs/openssl-certificate-authority/
ルートペアを作成し、中間ペアを作成し、次のようにSquidにインストールしたサーバー証明書に署名しました。
http_port 3129 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/gatesentry.csr.cert.pem key=/etc/squid3/key/gatesentry.key.pem
存在するsquid3.conf
イカはこれから始まります。実際に動作するかどうかはまだわかりません。
プロキシ経由でインターネットにアクセスするブラウザにインストールするためにクライアント証明書を生成しようとすると、次のエラーが発生します。
私は以下に基づいて生成します。「証明書の作成」という「サーバーおよびクライアント証明書の署名」セクション
認証用にクライアント証明書を生成するには、「usr_crt」拡張を使用する必要があることが示されているので、次のようにします。
cd /root/ca
openssl ca -config intermediate/openssl.conf \
-extensions usr_cert -days 375 -notext -md sha256 \
-in intermediate/csr/gatesentry.csr.pem \
-out intermediate/certs/client.cert.pem
Using configuration from intermediate/openssl.conf
Enter pass phrase for /root/ca/intermediate/private/intermediate.key.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 4097 (0x1001)
Validity
Not Before: Jun 22 10:36:44 2016 GMT
Not After : Jul 2 10:36:44 2017 GMT
Subject:
countryName = US
stateOrProvinceName = Pennsylvania
localityName = locality
organizationName = Parents
organizationalUnitName = Security
commonName = gatesentry.domain.lan
emailAddress = [email protected]
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client, S/MIME
Netscape Comment:
OpenSSL Generated Client Certificate
X509v3 Subject Key Identifier:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
X509v3 Authority Key Identifier:
keyid:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, E-mail Protection
Certificate is to be certified until Jul 2 10:36:44 2017 GMT (375 days)
Sign the certificate? [y/n]: y
failed to update database
TXT_DB error number 2
rootでコマンドを実行すると(もちろん、別のコンピュータで)TXT_DBエラー番号2メッセージが表示される理由がわかりません。
チュートリアルによると、このプロセスで一般名を変更できる必要があります。
答え1
TXT_DB error number 2
DB_ERROR_INDEX_CLASH を示します。
同じインデックスを持つ証明書をOpenSSL CAデータベースに2回送信しようとしました。
これは通常、同じシリアル番号または同じ一般名を含むデータベースに送信された証明書が原因で発生します。後者の場合は、ファイルunique_subject
でそのオプションを確認してください。intermediate/openssl.conf
で読むことができます。man ca
クライアント証明書の一般名は、ユーザー名など何でも構いません。
一般名はファイルに割り当てられますintermediate/openssl.conf
。値の入力を求めるか、構成ファイルから値を読み取るように構成できます。これprompt
はで読み取ることができるオプションによって制御されますman req
。
答え2
チュートリアルによると、このプロセスで一般名を変更できる必要があります。
チュートリアルでは、新しいキーの生成、openssl genrsa
新しいCSRの使用、およびopenssl req -new
CSRを使用して証明書生成を使用する方法について説明しますopenssl ca
。 (多くの人のように、証明書が「CSR署名」によって生成されたと誤って指定されていますが、CAはCSRに署名しません。CAは証明書に署名します。部分的に基づくCSRですが、CSRと同じではありません。 /ノホ)
新しいCSRを作成する場合一般名を含むがこれに限定されないプリンシパル名を指定します。この名前は上記のCA証明書とは異なる必要があります。しなければならない混乱を避けるために、他のEE証明書とは異なります。
openssl ca
実際に発行された証明書のサブジェクト名(通常の名前だけを使用するのではなくフルネーム)をオーバーライドできますが、これにより同じキーの証明書が異なる名前になり、不必要に混乱し、一般的にセキュリティレベルが低下します。 (あなたは)その部分を気にしませんが、他の人も気にしていて簡単ではありません。)
usr-crtセクションで拡張機能をロード中にエラーが発生しました...
値がありません... name = email_in_dn
アップストリームのデフォルトファイルから来た可能性があります...
間接的。openssl ca -config xxx
xxxを使用し、xxxのみを構成ファイルとして使用します。ファイルがアップストリームからインポートされた場合、必要な部分名usr_cert
はすでに見つかった名前ですが、デフォルト値なので usr_cert を指定する必要はありません。 email_in_dnのエラーメッセージは、エラースタックに残っている唯一の実際のエラーです。usr-crt
一度変更した後は必要ありませんが、-noemailDN
まだ必要になる場合があります。
これはsubjectNameAltに関連していますか?
あなたが意味すると仮定するとunique_subject
、いいえ。subjectAltName
(いいえsubjectNameAlt
)SANとも呼ばれるのは、トピックの代替名を指定する一般的な拡張ですが、SANは含まず、デフォルトunique_subject
フィールドSubject
のみを含みます。
プロキシ経由でインターネットにアクセスするブラウザにインストールされたクライアント証明書
明らかに、これらのクライアント証明書は自分の身元を確認するためにのみ使用されます。代理人へ。クライアント/ブラウザの証明書を使用してHTTPS MitMを介してインターネット上の何かを認証することはできず、インターネット上の他の人のシステムに認証するために直接発行されたクライアント証明書を使用することはできません。