我正在实现一个必须使用Java web服务的c#web服务客户端。通信协议是https,认证必须通过证书(包括私钥)完成。
据我所知,私钥的目的是为了识别Web服务背后的正确客户数据库。
我不知道证书文件的格式,因为它的文件扩展名是“txt”。如果我尝试通过mmc控制台在Windows证书存储区中导入此文件,则会发生“文件类型无法识别”错误(我从德语翻译了此文件,因此在英文中可能听起来有点不同)。所以我的客户端应用程序不能使用这个证书,它不会在证书存储中找到它。
我试图实例化证书并将文件位置传递给构造函数。
mVerifyCert = new X509Certificate2(AppConfig.Settings.Default.CertificateAndKeyFileFullName);但是,然后发生以下异常(英语中可能是“System.Security.Cryptography.CryptographicException:找不到对象”。
{System.Security.Cryptography.CryptographicException:Das angeforderte Objekt wurde nicht gefunden。
bei System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
bei System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName)
bei System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName,Object password,X509KeyStorageFlags keyStorageFlags)
bei System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName)
bei System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName)
所以现在可能会认为文件会有问题。但是,当这个文件与SoapUI工具一起使用来测试web服务时,它工作正常。
我也喜欢Java示例客户端应用程序使用这个文件与Java信任存储,它工作正常的Java客户端。
我也尝试将文件扩展名从“txt”更改为“p12”,“pem”,以便能够将文件导入Windows证书存储但未成功。
你能告诉我这里有什么问题吗?我能做些什么来解决这个问题。我根本不知道。
这是我的app.config:
..\..\Data\getDefactInstance.xml
..\..\Data\DefactInstanceXmlDotNet.xml
https://xyz.com/wsAdapter
..\..\Data\sdm.crt
..\..\Data\sdmCert + key.txt
https://xyz.net/qcbin
xyz
xyz
xyz
xyz
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
realm="" />
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
realm="" />
bindingConfiguration="WSAdapterBFPortBinding" contract="QcsiWS.WSAdapterBCI"
name="WSAdapterBFPortHttp" />
binding="basicHttpBinding" bindingConfiguration="WSAdapterBFPortBinding1"
contract="QcsiWebService.WSAdapterBCI" name="WSAdapterBFPortHttps" />