天天看點

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替換成證書綁定的域名。

繼續閱讀