自己認証機関になった後にクライアント証明書を生成することはできません。

自己認証機関になった後にクライアント証明書を生成することはできません。

自分だけの認証機関になってみてください。次のチュートリアルを完了した後: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 2DB_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 -newCSRを使用して証明書生成を使用する方法について説明しますopenssl ca。 (多くの人のように、証明書が「CSR署名」によって生成されたと誤って指定されていますが、CAはCSRに署名しません。CAは証明書に署名します。部分的に基づくCSRですが、CSRと同じではありません。 /ノホ)

新しいCSRを作成する場合一般名を含むがこれに限定されないプリンシパル名を指定します。この名前は上記のCA証明書とは異なる必要があります。しなければならない混乱を避けるために、他のEE証明書とは異なります。

openssl ca実際に発行された証明書のサブジェクト名(通常の名前だけを使用するのではなくフルネーム)をオーバーライドできますが、これにより同じキーの証明書が異なる名前になり、不必要に混乱し、一般的にセキュリティレベルが低下します。 (あなたは)その部分を気にしませんが、他の人も気にしていて簡単ではありません。)

usr-crtセクションで拡張機能をロード中にエラーが発生しました...
値がありません... name = email_in_dn
アップストリームのデフォルトファイルから来た可能性があります...

間接的。openssl ca -config xxxxxxを使用し、xxxのみを構成ファイルとして使用します。ファイルがアップストリームからインポートされた場合、必要な部分名usr_certはすでに見つかった名前ですが、デフォルト値なので usr_cert を指定する必要はありません。 email_in_dnのエラーメッセージは、エラースタックに残っている唯一の実際のエラーです。usr-crt一度変更した後は必要ありませんが、-noemailDNまだ必要になる場合があります。

これはsubjectNameAltに関連していますか?

あなたが意味すると仮定するとunique_subject、いいえ。subjectAltName(いいえsubjectNameAlt)SANとも呼ばれるのは、トピックの代替名を指定する一般的な拡張ですが、SANは含まず、デフォルトunique_subjectフィールドSubjectのみを含みます。

プロキシ経由でインターネットにアクセスするブラウザにインストールされたクライアント証明書

明らかに、これらのクライアント証明書は自分の身元を確認するためにのみ使用されます。代理人へ。クライアント/ブラウザの証明書を使用してHTTPS MitMを介してインターネット上の何かを認証することはできず、インターネット上の他の人のシステムに認証するために直接発行されたクライアント証明書を使用することはできません。

関連情報