2013-05-20 18 views
7

opensslコマンドでクライアントのCSRに署名することについて、何か基本的で明白なものがありません。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

私が試しているコマンドとエラーメッセージは次のとおりです:これらのコマンドは、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ファイルが出ていることを確認しましたそれら。私はこのCSRに署名し、クライアントに証明書を送り返したいと思います。

+0

設定ファイルを確認してください。これは、OpenSSLとX.509ではなく、設定によって強制されなければなりません。 – doptimusprime

答えて

6

解決済み。 dbasicに感謝します。

署名活動が行われている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 
関連する問題