自签名证书做法

1.先生成一对秘钥,把公钥做成证书 server.key

openssl  genrsa [-des3] -out server.key 2048       生成一个 2048 位的 私钥

说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码, 如果不需要, 直接去掉-des3选项
这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

我们可以 输出它的公钥看看

openssl  rsa -in server.key -pubout

2. 生成跟CA并自签(证书签名请求)

生成私钥之后,便可以创建csr文件了。
此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:

openssl req -new -x509 -key server.key -out server.csr
国家 Country Name:  CN   
省    Stat or Province Name   Shanghai
市   Locality Name     Shanghai
公司  Organization Name :  HUPU
部门 Organizational Unit   Tech
主机名 Common Name    www.zmz8.com
邮件  Email Address    279861795@qq.com

3.生成证书CRT server.crt

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
备注: crt 转 p12
openssl x509 -in server.crt -inform der -out server.pem
openssl pkcs12 -export -inkey server.key-in server.pem -out server.p12

我们可以查看证书内容

openssl  x509  -text -in server.crt

4.配置nginx

证书路径 /usr/local/nginx/ssl/server.crt

私钥路径 /usr/local/nginx/ssl/server.key

nginx添加配置
server {
    listen 80;
    server_name     www.zmz8.com;
    #rewrite ^/(.*)$ https://www.zmz8.com/$1 permanent;
    return 307 https://$host$request_uri;
}
server {
  listen 443;
  server_name  www.zmz8.com;
  ssl on;
  ssl_certificate   ../ssl/server.crt;
  ssl_certificate_key  ../ssl/server.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}

最后如果可以的话 ,可以配置一个服务器签署

openssl req -new -out server.csr -key server.key -config /etc/pki/tls/openssl.cnf 
OpenSSL工具说明:
OpenSSL   ssl的开源实现,几乎实现了市面上所有的加密
libcrypto: 通用加密库, 任何软件要实现加密功能 链接调用这个库
libssl:   TLS/SSL 加密库  
openssl: 命令行工具   多功能多用途工具  实现私有证书颁发机构
子命令:
genrsa    [-out filename]    [-passout arg] [numbits]
generate an  RSA  private key  
生成一个 RSA 的私钥 (公钥是从私钥中提取的,有了私钥 就有公钥)
openssl  rsa -in ca.key -pubout  提取私钥
创建证书的基本流程是这样:
生成自己的服务端私钥     Server Key
输入基本信息并用私钥签名生成CSR    证书签名请求
提交CSR给证书机构CA(免费或商业证书)签名生成CRT,或自己做CA签名生成CRT(自签名证书)
生成RSA服务器私钥:
openssl genrsa -out server.key 4096 
输出的server.key文件就是服务器私钥,4096是密钥长度,要求不高的话用2048也可。
生成CSR:
执行命令  openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout myprivate.key -out mydomain.csr生成 CSR 文件。
其中,
-new 指定生成一个新的CSR。
-nodes 指定私钥文件不被加密。
-sha256 指定摘要算法。
-keyout 生成私钥文件。
-newkey rsa:2048 指定私钥类型和长度。 
因为sha1已经不安全,所以这里用了sha256,可能太旧的客户端(比如win98?)会不支持。
yoursite.csr就是生成的CSR,yoursite建议用你的网站名标识会比较方便识别。
然后按提示输入:
国家
省
市
公司
部门
通用名(即网站域名,这个必须准确,有些商业证书支持在这里用带www的域名后签发出同时支持不带www的域名)
email
密码(可选,设置的话以后重启webserver都需要输入密码)

参考连接:

https://www.jianshu.com/p/44a3efae1d84

https://blog.csdn.net/yongf_xu/article/details/85006854

发表评论

电子邮件地址不会被公开。 必填项已用*标注