相关疑难解决方法(0)

如何以编程方式为WCF服务创建自签名证书?

我有一个自托管的WCF服务器作为本地系统帐户下的Windows服务运行.我正在尝试以编程方式在c#中创建自签名证书,以便使用消息级别安全性与net.tcp端点一起使用.

我使用以下代码,它非常基于如何使用C#创建自签名证书中的接受答案试图解决我的问题的一些小变化.

public static X509Certificate2 CreateSelfSignedCertificate(string subjectName, TimeSpan expirationLength)
{
    // create DN for subject and issuer
    var dn = new CX500DistinguishedName();
    dn.Encode("CN=" + subjectName, X500NameFlags.XCN_CERT_NAME_STR_NONE);

    CX509PrivateKey privateKey = new CX509PrivateKey();
    privateKey.ProviderName = "Microsoft Strong Cryptographic Provider";
    privateKey.Length = 1024;
    privateKey.KeySpec = X509KeySpec.XCN_AT_KEYEXCHANGE;
    privateKey.KeyUsage = X509PrivateKeyUsageFlags.XCN_NCRYPT_ALLOW_DECRYPT_FLAG | X509PrivateKeyUsageFlags.XCN_NCRYPT_ALLOW_KEY_AGREEMENT_FLAG;
    privateKey.MachineContext = true;
    privateKey.ExportPolicy = X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_EXPORT_FLAG;
    privateKey.Create();

    // Use the stronger SHA512 hashing algorithm
    var hashobj = new CObjectId();
    hashobj.InitializeFromAlgorithmName(ObjectIdGroupId.XCN_CRYPT_HASH_ALG_OID_GROUP_ID,
        ObjectIdPublicKeyFlags.XCN_CRYPT_OID_INFO_PUBKEY_ANY,
        AlgorithmFlags.AlgorithmFlagsNone, "SHA1");

    // Create the self signing …
Run Code Online (Sandbox Code Playgroud)

.net c# certificate self-signed wcf-security

13
推荐指数
2
解决办法
8708
查看次数

C#使用certenroll.dll在没有CA的情况下生成非自签名客户端CX509Certificate请求

我有一个自签名的根证书,我使用CERTENROLL.dll的CX509CertificateRequest证书功能在C#中生成.

我想编写一个函数,使用相同的API生成由我的root签名的客户端证书.但是,我能找到的唯一不生成自签名证书的CertEnroll选项需要经过身份验证的CA.

似乎有一个用于设置SignerCertificate的标志,但始终无法初始化.

        //Initialize cert
        var cert = new CX509CertificateRequestCertificate();
        //take care of signer
        cert.Issuer = issuen;
        CSignerCertificate sc = new CSignerCertificate();
        var raw = SEScert.GetRawCertData();
        var rawStr=Convert.ToBase64String(raw);
        sc.Initialize(false, X509PrivateKeyVerify.VerifyNone,    
                      EncodingType.XCN_CRYPT_STRING_BASE64, rawStr); //fails here
        cert.SignerCertificate = sc;
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何生成由我的root签名的客户端CX509CertificateRequest?

任何帮助或建议将不胜感激.

c# certificate x509certificate2 certenroll mscapi

3
推荐指数
1
解决办法
2054
查看次数