7

openssl コマンドを使用してクライアントの CSR に署名することについて、基本的で明白なことが欠けています。

私は(シミュレートした)2つの組織を持っています.1つは認証局の組織(カリフォルニアに存在する)であり、もう1つはWA州にあるクライアント組織です。

次の手順に従って、openssl コマンドを使用して Linux システムに認証局を作成しました。 http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

現在、2 つのファイルがあります。1. CA の秘密鍵を含む cakey.pem。このプライベートはパスフレーズにも関連付けられています。2. CA の自己署名証明書を含む cacert.pem

次に、クライアントからのすべての CSR に署名したいと思います。ワシントン州のクライアントから client-csr.pem ファイルが送られてきました。CSR の署名に関するこの man ページと最後の例を読んでいます。http://www.openssl.org/docs/apps/ca.html

試しているコマンドとエラー メッセージは次のとおりです。これらのコマンドを CA のシステムで実行します。このシステムは、cakey.pem (CA の秘密鍵) と cacert.pem (CA の自己署名証明書) を作成したのと同じシステムです。

$ openssl ca -in demoCA/csrs/client-csr.pem -out client-cert.pem
Using configuration from /usr/lib/ssl/openssl.cnf 
Enter pass phrase for ./demoCA/private/cakey.pem: 
Check that the request matches the signature 
Signature ok 
The stateOrProvinceName field needed to be the same in the 
CA certificate (California) and the request (WA)

問題は、州名が CA 証明書とクライアント CSR の両方で同じでなければならない理由です。

クライアントは「カリフォルニア」にいないため、CSR を作成するときに独自の州名 (WA) を入力します。認証局として、クライアントが実際に WA にあり、CSR ファイルが実際に WA からのものであることを確認しました。この CSR に署名し、証明書をクライアントに返したいと考えています。

4

1 に答える 1

6

解決しました。ありがとうございます。

署名アクティビティが行われる CA のシステムで、/etc/ssl/openssl.conf のコピーを作成し、それを変更して、新しい構成ファイルを作成します。署名するときにその変更されたコピーを使用します。

cp /etc/ssl/openssl.cnf  ./openssl-for-signing-csrs.cnf

そして、'countryName'、stateOrProvinceName または 'organizationName' を 'supplied' に変更します。これは、証明書が CSR の値を使用する必要があり、証明書との照合を試みないことを示します (自己署名の場合にのみ「照合」を試みます。デフォルトの openssl.cnf は自己署名とCA用ではありません)

80,82c80,82
< countryName           = match
< stateOrProvinceName   = match
< organizationName      = match
---
> countryName           = supplied
> stateOrProvinceName   = supplied
> organizationName      = supplied
于 2013-05-21T16:34:12.833 に答える