如何使用openssl签署客户的CSR?



关于使用openssl命令签署客户端的CSR,我错过了一些基本的和明显的东西。

我有(模拟)两个组织,一个是证书颁发机构的组织(存在于加利福尼亚州),另一个是位于WA州的客户组织。

我使用openssl命令按照以下步骤在Linux系统上创建了证书颁发机构。http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

我现在有两个文件1. 凝固了的。pem,其中包含CA的私钥。此私有也与密码短语相关联。2. cacert。包含CA的自签名证书的pem

接下来,我要对来自客户机的所有csr进行签名。华盛顿州的一个客户发送给我一个文件client- csv .pem。我正在阅读关于签署csr的手册页以及最后的示例。http://www.openssl.org/docs/apps/ca.html

我正在尝试的命令和错误消息如下:我在CA的系统上运行这些命令,与我创建密钥的系统相同。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-certificate和client-CSR的状态名称必须相同。

客户端不在"California",所以当他们创建CSR时,他们会使用自己的州名(WA)。作为一个证书颁发机构,我已经核实了客户确实在WA, CSR文件确实来自他们。我想签署这份CSR,并将证书返回给客户。

解决。谢谢dbasic。

在进行签名活动的CA系统上,复制/etc/ssl/openssl.conf并修改它并创建一个新的配置文件。在签名时使用修改后的副本。

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

并将'countryName', stateOrProvinceName或'organizationName'修改为' supplies '。这表明证书应该使用来自csr的值,而不尝试与证书匹配(只有在自签名时才会尝试"匹配",默认的openssl.cnf似乎是为自签名而不是为CA创建的)

80,82c80,82
< countryName           = match
< stateOrProvinceName   = match
< organizationName      = match
---
> countryName           = supplied
> stateOrProvinceName   = supplied
> organizationName      = supplied

最新更新