我是在Linux下操作的,用的是Fedora系统,
1. 先:
yum -y install openssl
在网上找了很多资料,都不太对,要么生成的不能正常做为Https服务,要么生成的过程就有问题
这里写的是自己的经验:
2. CA.* 是证书颁发机构的CA,先生成CA.*, 再用CA相关文件生成server.* 这个很重要!
3. 要在浏览器中把CA.crt导入“受信任的根证书颁发机构”
4. 生成根证书CA(<国家>。。。<域名>需要替换成自己的)
openssl req -new -newkey rsa:2048 -nodes -out CA.csr -keyout CA.key -subj "/C=<国家>/ST=<省>/L=<城市>/O=<组织>/OU=<部门>/CN=<域名>"
openssl req -new -x509 -key CA.key -out CA.crt -subj "/C=<国家>/ST=<省>/L=<城市>/O=<组织>/OU=<部门>/CN=<域名>"
5. 用根证收签发,生成站点证书(<国家>。。。<域名>需要替换成自己的)
openssl req -new -newkey rsa:2048 -nodes -out server.csr -keyout server.key -subj "/C=<国家>/ST=<省>/L=<城市>/O=<组织>/OU=<部门>/CN=<域名>"
openssl ca -in server.csr -out server.crt -cert CA.crt -keyfile CA.key
6. 碰到错误:
I am unable to access the ./demoCA/newcerts directory
./demoCA/newcerts: No such file or directory
运行下脚本
mkdir demoCA
mkdir demoCA/newcerts
mkdir demoCA/private
touch demoCA/index.txt
echo "01" >> demoCA/serial
另外说一下,Mono下,用HttpClient连Https,或SmtpClient发Gmail时,会报错,解决办法为:
在Linux下执行
mozroots --import --ask-remove --machine
certmgr -ssl -m smtps://smtp.gmail.com:465
certmgr -ssl -m https://www.google.com
或者你知道HTTPS网站,直接:
certmgr -ssl -m https://<host/domain>