创建服务器证书时出错 - IBM Worklight 6.2 中基于 X509 证书的身份验证

sas*_*asi 1 authentication ssl ibm-mobilefirst

我正在 IBM Worklight 6.2 中开发一个针对 Android 和 IOS 的项目。我的项目应该使用基于 X509 证书的身份验证。我使用的是 Windows 7 操作系统,并按照此 PDF 操作

  1. 创建根CA
  2. 创建签名CA
  3. 创建服务器证书
  4. 为服务器证书创建证书链
  5. 导出签名 CA 的 PKCS12 文件
  6. 导出服务器证书的 PKCS12 文件

我已经在Windows中安装了openssl-0.9.8h-1-setup,所以我在C:\Program Files (x86)\GnuWin32\share中得到了openssl.cnf。借助此配置文件,我已成功创建根 CA。接下来,当我尝试签署签名 CA 时,它会抛出该消息。命令和消息如下:

openssl ca -in signingca\signing_ca.csr -out signingca\signing_ca.crt -keyfile rootca\root_ca_key.pem -cert rootca\root_ca.crt -config openssl.cnf -name root_authority_ca_config -extensions signing_authority -md sha512 -days 365 -passin pass:passRoot

Using configuration from openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'Development Signing CA'
The mandatory countryName field was missing
Run Code Online (Sandbox Code Playgroud)

通过此消息,它创建签名 CA 的标志。

接下来我尝试创建服务器证书,它显示错误消息。代码及错误信息如下:

#REM Sign the CSR with the signing CA
openssl ca -in server\server.csr -out server\server.crt -keyfile signingca\signing_ca_key.pem -cert signingca\signing_ca.crt -config openssl.cnf -name signing_authority_ca_config -extensions server_identity -md sha512 -days 365 -passin pass:passSigning
Run Code Online (Sandbox Code Playgroud)

它抛出以下消息,并且无法签署服务器 CA。

Using configuration from openssl.cnf
unable to load certificate
4716:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting:
TRUSTED CERTIFICATE
Run Code Online (Sandbox Code Playgroud)

我需要知道如何解决这个问题!

Dan*_*lez 5

出现第二个错误是因为根 CA 证书未能正确生成,因此表示无法为其找到受信任的证书,因此在修复第一个错误后,其他错误应该可以工作。

第一个错误发生是因为 openssl.cnf 文件中缺少某些内容。在您的配置中,您必须指定哪些字段是可选的,哪些是必需的。如用户证书身份验证入门指南中的幻灯片 18 所示,您可以在policy_match 部分中指定每一项,如下所示:

[ policy_match ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
Run Code Online (Sandbox Code Playgroud)

确保将每个单独幻灯片中指定的所有配置选项添加到 openssl.cnf 中,或者使用提供的示例项目中提供的 openssl.cnf,该项目中已包含所有配置。