[英]Certificate Authentication and Message Security without private key in the certificate
我在WCF(客戶端)中的證書有問題。
我已收到三張證書:
注意:沒有證書具有私鑰
在WCF中,可以使用證書身份驗證。 這是我的樣本:
var sslBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
sslBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
sslBinding.MessageEncoding = WSMessageEncoding.Mtom;
var certificate= new X509Certificate2(_certificatesFullPath, _certificatePassword, X509KeyStorageFlags.MachineKeySet);
var userCertificate = new X509Certificate2(_userCertificate, "", X509KeyStorageFlags.MachineKeySet);
var identity = new X509CertificateEndpointIdentity(userCertificate);
var endPoint = new EndpointAddress(new Uri(_endPointURI), identity);
using (Test.SdIRiceviNotificaClient client = new Test.SdIRiceviNotificaClient( sslBinding, endPoint))
{
client.ClientCredentials.ClientCertificate.Certificate = certificate;
client.Open();
var result = await client.NotificaEsitoAsync(new Test.NotificaEsitoRequest(idSdI.ToString(), fileName, XmlUtils.GetXmlBytes(new NotificaEsitoCommittente())));
client.Close();
}
我的問題是,現在我收到此異常:
X.509證書中不存在私鑰。
我知道沒有證書具有私鑰,並且我不能要求其他證書。
我擁有的唯一信息:所有證書都應在p12容器中使用。
我只是創建一個p12文件存在問題(沒有私鑰=>好的,就有可能帶有“ -nokeys”參數)。
我已經做到了:
openssl x509 -in CAEntratetest.cer -outform PEM -out CAEntratetest.pem
openssl x509 -in SDI-xxxxxxxxxxx.cer -inform DER -out SDI-xxxxxxxxxxx.pem -outform PEM
openssl x509 -in testservizi.fatturapa.it.cer -inform DER -out testservizi.fatturapa.it.pem -outform PEM
cat CAEntratetest.pem SDI-xxxxxxxxxxx.pem testservizi.fatturapa.it.pem > sum.pem
要創建p12文件,我需要一個私鑰:
openssl pkcs12 -export -in sum.pem -inkey private.key -out output.p12
如果我創建一個新密鑰=>,它將不起作用(沒有證書與私鑰匹配)
是否可以使用沒有私鑰的證書?
不可以,沒有私鑰您不能使用證書進行身份驗證。
基於X.509的身份驗證機制的安全性依賴於公共密鑰密碼術,其中會生成公共密鑰和私有密鑰。 只有私有部分應該保密。
您擁有的是公鑰。 用您的私鑰簽名是什么證明您“擁有”公鑰以及如何進行身份驗證。
還要注意:您不能簡單地為公共密鑰生成新的私有密鑰。 鑰匙是一對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.