openssl生成SSL证书
一、虚构一个CA认证机构 # 生成CA认证机构的证书密钥key # 需要设置密码,输入两次 openssl> genrsa -des3 -out ca.key 1024 # 去除密钥里的密码(可选) # 这里需要再输入一次原来设的密码 openssl> rsa -in ca.key -out ca.key # 用私钥ca.key生成CA认证机构的证书ca.crt # 其实就是相当于用私钥生成公钥,再把公钥包装成证书 openssl> req -new -x509 -key ca.key -out ca.crt -days 365 # 这个证书ca.crt有的又称为"根证书",因为可以用来认证其他证书 二、生成网站的证书 # 生成自己网站的密钥server.key openssl> genrsa -des3 -out server.key 1024 # 生成自己网站证书的请求文件 # 如果找外面的CA机构认证,也是发个请求文件给他们 # 这个私钥就包含在请求文件中了,认证机构要用它来生成网站的公钥,然后包装成一个证书 openssl> req -new -key server.key -out server.csr # 使用虚拟的CA认证机构的证书ca.crt,来对自己网站的证书请求文件server.csr进行处理,生成签名后的证书server.crt # 注意设置序列号和有效期(一般都设1年) openssl> x509 -req -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -days 365 三、文件解释 .crt/.cer 证书(Certificate) .key 密钥/私钥(Private Key) .csr 证书认证签名请求(Certificate signing request) *.pem base64编码文本储存格式,可以单独放证书或密钥,也可以同时放两个;base64编码就是两条-------之间的那些莫名其妙的字符 *.der 证书的二进制储存格式(不常用) 四、创建参考 openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server_csr.txt -subj "/C=*Country*/ST=*State or Province*/L=*Locality or City*/O=*Company*/OU=*Organizational unit*/CN=*Common Name*" Country: use a valid 2-letter country-code. State or Province: use your state or Province name, or use the Locality name if you have none. Locality or City: use your city, town or other locality name. Company: use your company/organization name or put NA (Not Applicable). Organizational Unit: use your unit or department name or put NA (Not Applicable). Common Name: put your domain name here (i.e. www.nctest.info or nctest.info), put *.domain_name (i.e. *.nctest.info) if you are using a wildcard type SSL. 五、快速创建 1. 生成私钥server.key openssl genrsa -des3 -out server.key 2048 openssl rsa -in server.key -out server.key chmod 400 server.key 2. 生成服务认证server.crt openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=CN/ST=GuangDong/L=Shenzhen/O=CiticBank/CN=Dragonz-user/emailAddress=root@localhost' 3. root.crt
cp server.crt root.crt