我正在玩WCF和证书。我在我的计算机上安装了一个证书,在我的WCF服务配置中引用它,如下所示:
body.appendString("--\(boundary)--\r\n")
然后我开始服务。一切都很好。然后我通过添加服务作为服务引用,在visual studio中创建一个简单的客户端控制台程序。我可以事先联系该服务,所以一切正常!当我在我的app.config中查找我的客户端时,我有这个身份:
<serviceCertificate findValue="testcert"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
我已经读过某个地方,这个值是公钥的base64编码值,由服务的wsdl提供。它是否正确?如果我查看wsdl,这里的公钥是,
<identity>
<certificate encodedValue="AwAAAAEAAAAUAAAAuFTG2BUHH8JSm1VyxrCgEzaOQfAgAAAAAQAAALIEAAAwggSuMIIClqADAgECAhBqosPak3lGkETZ3xl9oaC0MA0GCSqGSIb3DQEBBQUAMBMxETAPBgNVBAMTCHRlc3RjZXJ0MB4XDTE1MDUwMjIyMDAwMFoXDTI1MDUwOTIyMDAwMFowEzERMA8GA1UEAxMIdGVzdGNlcnQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCoRWN7519nqQ7uFwgKtUWdTyKUhz+OdF9XtQF431/A1nhVsQsZ+J2k2Ola63eyTIEdR4y6jUx7KfQ1TMOtKSKB6iobP+JT8jibS1Ll47s6Ym2iEGLI6myftsuTezjObrnFO3tifCIMeKtMKdu1XYkpWr/DQogBElI6ZjkpaxIN+R+kw0cBwUm1o29/3V3VdHY9rlh4j8YJPMY903WCU/p7kCjiCfHWrWEkicer1rC6OC0TPLQVP0FSt6dCo1ptvHHk+aIUOU/lExCpT/FYjGUw5l8KeLz+V2xJ+Uy/kjuaAfSqE9wel/yDhDq599xbiBCViyAFSOfl11IcmOpA+H2LLuqvYZaFfem0MrTNJbr79Xjp/ywaQYf0jcK/D7t+6ouPmv4hibkeeELO1Cy3LQIYc3MNkvAkoiIXTxve2TmmN8CThQPfX3jrFm+sHvUEja4HnP5sbMuk9yNEvS+pJZj6hcmRyHzj9GIRRB5rCYfg/6pe0ttIs0Y4vaVzO232i4ffL1S9OzSLf7OYHfKvPc7YeEuouqPSAjIzB9BbEh678AtIUmatOiSBPpHYsPgz5QN+0kNSCgXnVkV+XN+JEOjxmHxGaPQHP3bvXAXZ94Y8jeSzLH5SyDxakAEJuujTL3wSRbNAy+ORexSC3YGmuQixaOHuTZ40BCQKxrDo/+NX6wIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQCcPb5B8Q3X3XqIrrNbzl4Eb4mLzmHrRP/W64LssGLr9O0MoJYw+RdOWyIbEtvg7nq0p0qBSi7lBq1ete/RSNiT3WMjIRPCgwZkq/yadolGgtRBq3FVHR7royjLu1DwOBtAhMQuBHopK6Dt88E4z8Bh/vyMruMs7VSH6cFbA0+iII02TLkC4+cgt5ZTxdet2JwyGsHNdk9c8pfq50Wht3kFzZPMYrowYH/c0fxkaIqWUN+W2sabBj/lzpo3kd6q0bBqamek9Bmk6IgikQrgx/ktAF3ul1u+2ybltQ7gJZIIuZphDSPmRRm+/sB2Wf6XGSG1ZUhrxsofQ7HVhlksTIfDQ7CtB8IlTmtesorJNfXw9ymKDWzvDRfNEVChDj/OGu3GHX6qwq7PeCsstxQeQRVQgB4Mo+ghCeTjH20xCxOzzZZVP0IRe/WvxNzxJxcnzYCgF7F9ztQBJoqUBqLVKdXYnLFRymFPpnc6OOTIi/+yD/4oNV9qMfFX14K+rVmq+HkDW1p3ipteDz2xzodiiYTk27yILHb3yJ2GgvuLmv4zKgUc3KTkxQeN4fmDOgqFP9VFXGWqgiPrbuFiBB+VNFDwbqgQtnz/tmZ6PDCNuMFJYALYSnKzU9/IWWScivzVeyrZuWPALX8nW3gAtOOgTaSKg9/3jAAqIWqTvkO0sviG6A==" /></identity>
当我从证书存储区导出密钥(base64编码导出)时,它与公钥匹配。一切都很好。但是我没有得到wsdl和export的值如何与客户端app.config文件中的值相对应?如果我base64编码导出的值(或wsdl的值),我不会得到编码值。
所以我的问题是:客户端app.config文件中的值是如何编码的?我错过了什么吗?它甚至是客户端app.config中的公钥吗?
答案 0 :(得分:1)
这两个值均适用于带有指纹B854C6D815071FC2529B5572C6B0A013368E41F0和主题CN = testcert
的证书其中一个是使用此方法(https://msdn.microsoft.com/en-us/library/dxz81eb9(v=vs.110).aspx)并传递Cert X509ContentType而另一个使用SerializedCert X509ContentType的字节的base64编码。
我不知道为什么一个用于另一个但它们代表相同的东西(虽然从我发布的链接,看起来SerializedCert包含包含在Windows证书存储中的属性以及证书本身)