Windows系统下制作ssl证书笔记
Windows系统下制作公钥私钥ssl证书
1.安装软件Win32OpenSSL_Light-1_1_0i.exe
2.进入C:\\OpenSSL-Win32\\bin目录下,双击openssl.exe,打开cmd窗口。(以下的命令均在openssl.exe窗口中执行)
3.使用version命令,查openssl版本
4.请求方(作为客户的我们)的操作
生成服务端(即网站)的私钥(key文件)及csr 文件(证书签名请求)
①生成网站私钥文件(后缀为.key)
genrsa -des3 -out server.key 2048
说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。注意:生成私钥,需要提供一个至少4位的密码。
②去除私钥密码(创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码)。(实践中用ksweb时必须去除私钥密码,不然提示错误。
所以在合并为pem文件时你必须去除私钥密码。)
rsa -in server.key -out server.key
此时需要输入创建私钥时输入的密码
生成无密码的私钥文件server.key,原私钥文件会被覆盖,需要注意。
③从私钥文件生成证书请求(签名请求)文件(后缀为.csr)
req -new -key server.key -out server.csr
(请求方的详细信息)
Country Name (2 letter code) [GB]: #所在国家代码(只支持两位字符)State or Province Name (full name) [Berkshire]: #州或省名
Locality Name (eg, city) [Newbury]: #所在城市的名字
Organization Name (eg, company) [My Company Ltd]: #组织或公司的名字
Organizational Unit Name (eg, section) []: #公司所在部门
Common Name (eg, your name or your server's hostname) []: #服务器名字或个人名字申请证书的域名(建议和httpd.conf中serverName必须一致否则有可能导致apache不能启动)
Email Address []: #邮箱地址
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #加密证书请求的密码
An optional company name []:
注意:填写资料时除Common Name(常用名)一项必填外,其他都可以空
Common Name 这里填127.0.0.1或localhost
完成以后在bin文件夹下有了
server.key(网站服务器私钥)
server.csr(网站证书请求文件)
以上工作完成后,我们将server.csr文件(网站证书请求文件)发给CA。等待CA服务商审核通过后给我们发证书。
5.CA服务商做的工作
创建CA的证书:CA要想给别人发证首先自己得有证
生成(CA服务器的)私钥和X509格式的CA自签名证书,这是一步生成两个文件的命令,
req -new -x509 -keyout ca.key -out ca.crt
(CA服务商的详细信息)
Country Name (2 letter code) [GB]: #所在国家
State or Province Name (full name) [Berkshire]: #州或省名
Locality Name (eg, city) [Newbury]: #所在城市的名字
Organization Name (eg, company) [My Company Ltd]: #组织或公司的名字
Organizational Unit Name (eg, section) []: #公司所在部门
Common Name (eg, your name or your server's hostname) []: #服务器名字或个人名字
Email Address []: #Email地址
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #加密证书请求的密码
An optional company name []: #
注意:
①生成私钥,需要提供一个至少4位的密码。
②输入证书信息时除Common Name(常用名,即最后显示的颁发者)一项必填外,其他都可以空(有一次啥也没填居然也行)
如果是服务器证书,common Name时输入域名。
如果生成个人证书,如用来加密签名电子邮件,commonName输入姓名,emailAddress是电子邮件地址
命令完成后,会在bin文件夹下生成两个文件
ca.key(CA服务器私钥。有去除私钥密码命令但不必这样)
ca.crt(根证书,也就是CA的自签名证书,说白了就是他自己的私钥签名的文件。梦溪博客说CA根证书(公钥),这从非对称加密的原理上讲是对的)
6.完成以上工作后,真正的签名,颁发证书开始了
CA服务商用生成的CA的证书为刚才生成的server.csr文件(即客户发来的证书请求
文件)签名(我觉得是用CA的私钥签名,也许这个根证书有什么特殊地方。但基本原理不会变(这里不做深入研究)。一定是CA的私钥签名这个根本不会变)
x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 36500
如果CA私钥有密码则输入密码。完成后在bin文件夹下会生成文件server.crt(网站服务器证书)
7.使用证书:
有了CA服务商签名的server.crt这个SSL证书文件,我们就可以把自己的网站做成https能访问的了.(这也是我们买证书的目的)具体参考“phpstudy环境Apache配置下实现https访问和301重定向.doc”文档。
因篇幅问题不能全部显示,请点此查看更多更全内容