天天看点

openssl自生成https证书1.首先使用openssl执行如下命令生成一个key:然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。由于生成时候必须输入密码。你可以输入后执行如下代码复制一个nginx2.key文件,此key文件无密码然后使用openssl 根据这个key文件生成证书请求文件:3.最后根据这2个文件生成crt证书文件:以下属性中,以ssl开头的属性表示与证书配置有关。

1.首先使用openssl执行如下命令生成一个key:

openssl genrsa -des3 -out xxxx.key 1024

然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。

由于生成时候必须输入密码。你可以输入后执行如下代码复制一个nginx2.key文件,此key文件无密码

openssl rsa -in xxxx.key -out nginx.key

然后使用openssl 根据这个key文件生成证书请求文件:

openssl req -new -key nginx.key -out nginx.csr

Country Name (2 letter code) [XX]:CN #国家名称

State or Province Name (full name) []:ShangHai #省

Locality Name (eg, city) [Default City]:ShangHai #市

Organization Name (eg, company) [Default Company Ltd]:ACBC #公司

Organizational Unit Name (eg, section) []:Tech #部门

Common Name (eg, your name or your server's hostname) []:.mydomain.com #注意,此处应当填写你要部署的域名,如果是单个则直接添加即可,如果不确定,使用,表示可以对所有mydomain.com的子域名做认证

Email Address []:[email protected] #以域名结尾即可

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []: #是否设置密码,可以不写直接回车

An optional company name []: #其他公司名称 可不写

3.最后根据这2个文件生成crt证书文件:

openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt

4.最后使用到的文件是key和crt文件。如果需要用pfx 可以用以下命令生成:

openssl pkcs12 -export -inkey nginx2.key -in nginx.crt -out nginx.pfx

nginx配置文件

在配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置(如果server配置已存在,按照以下注释内容修改相应配置即可)。

使用示例代码前,请注意替换以下内容:

yourdomain.com:替换成证书绑定的域名。

如果您购买的是单域名证书,需要修改为单域名(例如www.aliyundoc.com);如果您购买的是通配符域名证书,则需要修改为通配符域名(例如*.aliyundoc.com)。

cert-file-name.pem:替换成您在步骤3上传的证书文件的名称。

cert-file-name.key:替换成您在步骤3上传的证书私钥文件的名称。

以下属性中,以ssl开头的属性表示与证书配置有关。

server {

listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
    root html;  #站点目录。
    index index.html index.htm;
}           

}

listen 80;
server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
    index index.html index.htm;
}           

所有的HTTP访问自动跳转到HTTPS页面,则可以在Web目录下打开.htaccess文件(如果没有,需新建该文件),并添加以下rewrite语句。

RewriteEngine On

RewriteCond %{

HTTP:From-Https

} !^on$ [NC]

RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$ [NC] #需要将yourdomain.com替换成证书绑定的域名。

RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L] #需要将yourdomain.com替换成证书绑定的域名。

继续阅读