赞
踩
- E:
- cd E:\soft\OpenSSL-Win64\bin
- set OPENSSL_CONF=E:\soft\OpenSSL-Win64\bin\openssl.cnf
- mkdir certs
- mkdir private
生成一个随机数
openssl rand -out private/.rand 1000
根证书是用于证书签发的,证书的签发机构都有自己的根证书。他们的根证书一般已经打包到浏览器的受信任的根证书目录里了,我们自己签发的需要手工安装到这个目录。
OpenSSL使用PEM(Privacy Enbanced Mail)格式来保存私钥,生成私钥的命令如下:
openssl genrsa -aes256 -out private/cakey.pem 1024
这一步会提示输入密码,
Enter pass phrase for private/cakey.pem:
请输入一个容易记忆的密码,以后产生其它文件时需要输入。我输入了:123456
该命令的相关参数解释如下:
该命含义如下:
genrsa: 使用RSA算法产生私钥
-aes256: 使用256位密钥的AES算法对私钥进行加密
-out: 输出文件的路径
1024: 指定私钥长度
openssl req -new -key private/cakey.pem -out private/ca.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=Mediasoft/OU=Mediasoft/CN=Mediasoft"
该命令含义如下:
req: 执行证书签发命令
-new: 新证书签发请求
-key: 指定私钥路径,这个是上一步产生的key文件
-out: 输出的csr文件的路径,这个是即将产生的请求文件,需要用这个文件来产生证书
-subj: 证书相关的用户信息(subject的缩写),
-subj
用于设置 Subject Name
其中 C 表示 Country or Region
ST 表示 State/Province
L 表示 Locality
O 表示 Organization
OU 表示 Organization Unit
CN 表示 Common Name
用上一步生成的csr,可以自己签发根证书:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/cakey.pem -in private/ca.csr -out certs/ca.cer
该命令的相关参数如下:
x509: 生成x509格式证书
-req: 输入csr文件
-days: 证书的有效期(天)
-sha1: 证书摘要采用sha1算法
-extensions: 按照openssl.cnf文件中配置的v3_ca项添加扩展
-signkey: 签发证书的私钥,第一步生成的Key文件
-in: 要输入的csr文件,上一步生成的csr文件
-out: 输出的cer证书文件
将在certs目录里生成的ca.cer根证书文件,根证书文件可以用于再次签发server证书,即用于nginx的服务器端证书,或client证书。
根证书通常是用于证书签发机构签发证书与分发到支持的客户端的,例如分发到Chrome浏览器的安装程序里,大多数情况下,你无法让Google等浏览器厂家将你的根证书安装到它们浏览器的证书根目录 ,但可以自己手工安装刚才签发的根证书。手工安装步骤:步骤 1-〉2-〉3-〉4如下:
- openssl genrsa -aes256 -out private/server.key 1024
-
- openssl rsa -in private/server.key -out certs/server.key
openssl req -new -key private/server.key -out private/server.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myo/OU=myou/CN=mycn"
-subj
用于设置 Subject Name
其中 C 表示 Country or Region
ST 表示 State/Province
L 表示 Locality
O 表示 Organization
OU 表示 Organization Unit
CN 表示 Common Name
openssl x509 -req -days 7304 -CA certs/ca.cer -CAkey private/cakey.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.crt
这里有必要解释一下这几个参数:
-CA:指定CA证书的路径,为第四步生成的CA证书
-CAkey: 指定CA证书的私钥路径
-CAserial: 指定证书序列号文件的路径
-CAcreateserial: 表示创建证书序列号文件(即上方提到的serial文件),创建的序列号文件默认名称为-CA,指定的证书名称后加上.srl后缀
在x509指令中,有多种方式可以指定一个将要生成证书的序列号,可以使用set_serial选项来直接指定证书的序列号,也可以使用-CAserial选项来指定一个包含序列号的文件。所谓的序列号是一个包含一个十六进制正整数的文件,在默认情况下,该文件的名称为输入的证书名称加上.srl后缀,比如输入的证书文件为ca.cer,那么指令会试图从ca.srl文件中获取序列号,可以自己创建一个ca.srl文件,也可以通过-CAcreateserial选项来生成一个序列号文件。
如果是Nginx,将以上certs目录里生成的 server.key与server.crt复制到证书相关目录下并进行相关设置即可。
- server {
- listen 443 ssl;
- server_name i569.cn;
-
- ssl_certificate ssl/server.crt;
- ssl_certificate_key ssl/server.key;
-
- ...
- }
NET::ERR_CERT_COMMON_NAME_INVALID错误。
可以使用扩展文件来在证书里嵌入扩展信息,例如DNS信息,IP信息,DNS信息的文件样本如下(手工生成的一个文件:private/server.dns.ext):
- keyUsage = nonRepudiation, digitalSignature, keyEncipherment
- extendedKeyUsage = serverAuth, clientAuth
- subjectAltName=@SubjectAlternativeName
-
- [SubjectAlternativeName]
- DNS.1=test.domain.com
IP扩展信息的样本如下(手工生成的一个文件:private/server.ip.ext):
- keyUsage = nonRepudiation, digitalSignature, keyEncipherment
- extendedKeyUsage = serverAuth, clientAuth
- subjectAltName=@SubjectAlternativeName
-
- [SubjectAlternativeName]
- IP.1=172.0.0.1
嵌入DNS信息以支持解决Chrome浏览器备用名的命令如下:
openssl x509 -req -days 7304 -CA certs/ca.cer -CAkey private/cakey.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.crt -extfile private/server.dns.ext
-extfile 使用 server.dns.ext (域名访问)或者 server.ip.ext (ip 直接访问)
- 查看nginx 执行文件地址 ps -ef|grep nginx
- 查看nginx.conf文件地址 locate nginx.conf
- 测试配置文件 /usr/sbin/nginx -tc /etc/nginx/nginx.conf
- 启动nginx /usr/sbin/nginx -c /etc/nginx/nginx.conf
- 重启nginx /usr/sbin/nginx -s reload -c /etc/nginx/nginx.conf
- 停止nginx kill -9 nginxPid
九:参考nginx.conf配置
include /etc/nginx/myconfig/*.conf;
- server {
- listen 80;
- server_name i569.cn;
- rewrite ^(.*)$ https://${server_name}$1 permanent;
- }
- server {
- listen 80;
- server_name www.i569.cn;
- rewrite ^/(.*)$ https://i569.cn/$1 permanent;
- }
-
- server {
- listen 443;
- server_name i569.cn; #填写绑定证书的域名
- ssl on; #1.21.5版本需将该行注释
- ssl_certificate /etc/nginx/myconfig/i569.cn.pem; #或者.crt文件
- ssl_certificate_key /etc/nginx/myconfig/i569.cn.key;
- ssl_session_timeout 5m;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
- ssl_prefer_server_ciphers on;
- location / {
- proxy_pass http://127.0.0.1:569;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。