我有一个使用WCF SOAP服务的应用程序,其消息凭证类型为Certificate。我在使用makecert开发/测试期间生成了开发级证书,现在我已准备好将我的代码升级到下一个环境。为此,我希望获得生产等级证书。
在与我们的系统代表合作之后,我能够获得客户端证书的PFX文件。这是生成证书的OpenSSL配置:
[req] # openssl req params
prompt = no
distinguished_name = MyName.Client
[MyName.Client]
C = US
ST = New York
O = MyCompany
OU = MyUnit
CN = MyName
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical,CA:FALSE
我们在其中一台服务器上使用Microsoft证书服务(我不太熟悉它)来生成MyName.Client.cer和MyName.Client.key文件。我们有一个根权限证书,名为MyCA.cer。然后我们使用OpenSSL从MyName.key,MyName.Client.cer和MyCA.cer生成MyName.pfx。我安装了MyName.Client.pfx,MyCA.cer和MyCA.crl,并从服务跟踪文件中获取以下异常:
The X.509 certificate CN=MyName.Client, OU=MyUnit, O=MyCompany, S=New York, C=US chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. The revocation function was unable to check revocation because the revocation server was offline.
所以我被困住了。我是一名有证书的新秀,并认为这是直截了当的。我们打算在最终环境中使用GeoTrust证书。我们为他们做了很多生意。我正在试图弄清楚要告诉我们的系统人员如何从我的应用程序获取GeoTrust的证书。在我看来,由于我的应用程序与dev证书一起工作,我应该能够安装它们,然后只需更改我的配置以查找新的证书。我错了吗?
提前感谢您的帮助。
答案 0 :(得分:0)
所以我找到了问题,并找到了解决方法(目前)。根据错误,撤销列表无法访问,因此我将其添加到服务器web.config:
<authentication revocationMode="NoCheck">
似乎可以做到这一点!