且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

OpenSSL.Net创建HTTPS用的自签名证书

更新时间:2022-05-13 04:14:15

要为IIS开启https访问,需要先生成一个证书,找了找用openssl.net最省事,代码如下:


  1. //先用大整数来生成一个1024bit的密钥对 
  2. RSA rsa = new RSA(); 
  3. BigNumber number = OpenSSL.Core.Random.Next(10, 10, 1); 
  4. rsa.GenerateKeys(1024, number, nullnull); 
  5. CryptoKey key = new CryptoKey(rsa); 
  6.  
  7. //创建X509证书,Subject和Issuer相同 
  8. X509Certificate x509 = new X509Certificate(); 
  9. x509.SerialNumber = (int)DateTime.Now.Ticks; 
  10. x509.Subject = new X509Name("CN=DOMAIN");   //DOMAIN为站点域名 
  11. x509.Issuer = new X509Name("CN=DOMAIN"); 
  12. x509.PublicKey = key;    //指定公钥 
  13. x509.NotBefore = Convert.ToDateTime("2011-1-1"); //起始时间 
  14. x509.NotAfter = Convert.ToDateTime("2050-1-1");  //失效时间 
  15. x509.Version = 2; 
  16.  
  17. //用私钥签一下名 
  18. x509.Sign(key, MessageDigest.MD5); 
  19.  
  20. //输出到crt文件中 
  21. BIO x509bio = BIO.File("C:\\CA.crt""w"); 
  22. x509.Write(x509bio); 
  23.  
  24. //生成pfx文件,注意证书链必须是空的 
  25. var certs = new OpenSSL.Core.Stack<X509Certificate>(); 
  26. PKCS12 p12 = new PKCS12("PASSWORD", key, x509, certs); //PASSWORD为保护密钥 
  27. BIO p12Bio = BIO.File("C:\\CA.pfx""w"); 
  28. p12.Write(p12Bio); 
  29.  
  30. //清理 
  31. rsa.Dispose(); 
  32. x509.Dispose(); 
  33. x509bio.Dispose(); 
  34. p12.Dispose(); 
  35. p12Bio.Dispose(); 

注意生成pfx时,证书链必须是空的,不能把自己加进去,否则证书看起来虽然没问题,但是绑定到iis时会出错。






     本文转自 BoyTNT 51CTO博客,原文链接:http://blog.51cto.com/boytnt/774885,如需转载请自行联系原作者