2013-05-20 59 views
7

我錯過了用openssl命令簽署客戶端CSR的一些基本和明顯的內容。如何使用openssl簽署客戶的CSR?

我有(模擬)兩個組織,一個是認證機構的組織(存在於加利福尼亞州),另一個是在WA州的客戶組織。

我使用openssl命令在Linux系統上創建了證書頒發機構,遵循以下步驟。 http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

我現在有兩個文件 1.包含CA私鑰的cakey.pem。這個私人也與密碼相關聯。 2. cacert.pem包含CA的自簽名證書

接下來,我想簽署客戶端的所有CSR。來自華盛頓州的客戶向我發送一個文件client-csr.pem。我正在閱讀關於最終簽署CSR和示例的手冊頁。 http://www.openssl.org/docs/apps/ca.html

我正在嘗試的命令和錯誤消息如下所示:我在CA系統上運行這些命令,創建了cakey.pem(CA的私鑰)和cacert.pem(CA's自簽名證書)

$ 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),作爲證書頒發機構,我已經證實客戶確實在西澳,並且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'修改爲'provided'。這表明證書應該使用來自CSR的值,並且不會試圖與證書相匹配(只會嘗試「匹配」僅用於自簽名,默認openssl.cnf似乎用於自簽名和不適用於CA)

80,82c80,82 
< countryName   = match 
< stateOrProvinceName = match 
< organizationName  = match 
--- 
> countryName   = supplied 
> stateOrProvinceName = supplied 
> organizationName  = supplied 
相關問題