openssl 本身製做ssl證書:本身簽發免費ssl證書,爲nginx生成自簽名ssl證書

server {
listen 80;
listen 443 ssl;
server_name ~^((cloud)|(demo-cloud)|(demo2-cloud)|(approval1))((\.it1alent\.link)|(\.ita1lent-inc\.cn))$;
ssl on;
ssl_certificate ./ssl/ssl.crt;
ssl_certificate_key ./ssl/ssl.key;php

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
ssl_prefer_server_ciphers on;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_session_timeout 5m;

location / {
index index.html index.htm;
proxy_pass http://127.0.0.1:8088;
proxy_http_version 1.1;
proxy_connect_timeout 9990;
proxy_send_timeout 9990;
proxy_read_timeout 9990;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header x-ssl-enabled true;
proxy_set_header X-Nginx-Proxy true;
}
}
css

 

這裏說下Linux 系統怎麼經過openssl命令生成 證書。html

首先執行以下命令生成一個key
openssl genrsa -des3 -out ssl.key 1024
而後他會要求你輸入這個key文件的密碼。不推薦輸入。由於之後要給nginx使用。每次reload nginx配置時候都要你驗證這個PAM密碼的。
因爲生成時候必須輸入密碼。你能夠輸入後 再刪掉。nginx

mv ssl.key xxx.key
openssl rsa -in xxx.key -out ssl.key
rm xxx.key
而後根據這個key文件生成證書請求文件
openssl req -new -key ssl.key -out ssl.csr
以上命令生成時候要填不少東西 一個個看着寫吧(能夠隨便,畢竟這是本身生成的證書)web

最後根據這2個文件生成crt證書文件

openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
這裏365是證書有效期 推薦3650哈哈。這個你們隨意。最後使用到的文件是key和crt文件。瀏覽器

若是須要用pfx 能夠用如下命令生成 openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx 在須要使用證書的nginx配置文件的server節點裏加入如下配置就能夠了。

server {
listen 443;
server_name bbs.nau.edu.cn;安全

if ($uri !~ "/logging.php$") {
rewrite ^/(.
)$ http://$host/$1 redirect;
}
ssl on;
ssl_certificate /home/ssl.crt;
ssl_certificate_key /home/ssl.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;服務器



} 而後重啓nginx就大功告成了

Windows下用Nginx配置https服務器

 

以Windows 10系統爲例。session

1、安裝OpenSSL

先到http://slproweb.com/products/Win32OpenSSL.html 去下載OpenSSL(根據系統選擇32位或者64位版本下載安裝)。app

而後安裝在C:\OpenSSL-Win64下。

而後配置環境變量。在系統環境變量中添加環境變量:

變量名:OPENSSL_HOME

變量值:C:\OpenSSL-Win64\bin;

(變量值爲OPENSSL安裝位置下的bin目錄)

並在Path變量結尾添加一條: %OPENSSL_HOME%

2、安裝Nginx

Nginx官網下載Nginx,我這裏下載的是 nginx/Windows-1.12.0 這個版本。

把下載好的壓縮包解壓出來,拷貝其中的nginx-1.12.0目錄到c:\下。並將文件夾名字修改成nginx。這樣,Nginx就被安裝到了c:\nginx目錄下。

進入到C:\nginx目錄下,雙擊nginx.exe文件便可啓動服務器。在瀏覽器地址欄輸入http://localhost,若是能夠成功訪問到Nginx的歡迎界面,則說明安裝成功。

3、生成證書  

一、首先在Nginx安裝目錄中建立ssl文件夾用於存放證書。好比個人文件目錄爲 C:\nginx\ssl

在控制檯中執行:

cd C:\nginx\ssl 

二、建立私鑰

在命令行中執行命令:

openssl genrsa -des3 -out buduhuisi.key 1024 # buduhuisi文件名是本身隨便起便可 

輸入密碼後,再次重複輸入確認密碼。記住此密碼,後面會用到。

三、建立csr證書

在命令行中執行命令:

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

其中key文件爲剛纔生成的文件。

執行上述命令後,須要輸入一系列的信息。輸入的信息中最重要的爲Common Name,這裏輸入的域名即爲咱們要使用https訪問的域名 ,好比我輸入的是localhost。其它的內容隨便填便可。

以上步驟完成後,ssl文件夾內出現兩個文件:buduhuisi.csr 和 buduhuis.key

四、去除密碼。

在加載SSL支持的Nginx並使用上述私鑰時除去必須的口令,不然會在啓動nginx的時候須要輸入密碼。

複製buduhuisi.key並重命名爲buduhuisi.key.org。

在命令行中執行以下命令以去除口令:

openssl rsa -in buduhuisi.key.org -out buduhuisi.key 

而後輸入密碼,這個密碼就是上文中在建立私鑰的時候輸入的密碼。

五、生成crt證書

在命令行中執行此命令:

openssl x509 -req -days 365 -in buduhuisi.csr -signkey buduhuisi.key -out buduhuisi.crt 

至此,證書生成完畢。咱們發現,ssl文件夾中一共生成了4個文件。下面,配置https服務器的時候,咱們須要用到的是其中的buduhuisi.crt和buduhuisi.key這兩個文件。

4、修改Nginx的nginx.conf配置文件

個人這個文件在C:\nginx\conf目錄下。用任意一個編輯器(如Sublime Text之類)打開這個nginx.conf文件。

找到HTTPS server配置的那一段(即包含有listen 443 ssl配置那一段)。咱們發現這段代碼被註釋掉了。因此,首先咱們把該段代碼前面的#號去掉。而後分別修改其中的ssl_certificate和ssl_certificate_key配置項爲剛纔所生成的buduhuisi.crt和buduhuisi.key這兩個文件的目錄。並配置server_name爲localhost。修改後的該段配置以下:

server { listen 443 ssl; server_name localhost; ssl_certificate C://nginx//ssl//buduhuisi.crt; # 這個是證書的crt文件所在目錄 ssl_certificate_key C://nginx//ssl//buduhuisi.key; # 這個是證書key文件所在目錄 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; # 這個是指定一個項目所在目錄 index index.html index.htm; # 這個是指定首頁的文件名 } } 

注意一下那兩個證書的文件路徑的寫法。

5、Nginx的經常使用操做

在繼續後面的內容以前,先簡單介紹下Windows命令行中操做Nginx的幾個經常使用的語句:

start nginx               # 啓動Nginx nginx.exe -s stop # 快速中止Nginx,可能並不保存相關信息 nginx.exe -s quit # 完整有序的中止Nginx,並保存相關信息 nginx.exe -s reload # 從新載入Nginx,當配置信息修改,須要從新載入這些配置時使用此命令。 nginx.exe -s reopen # 從新打開日誌文件 nginx -v # 查看Nginx版本 

由於修改了配置文件,因此須要退出控制檯,並從新打開一個控制檯。執行以下命令:

cd c:\nginx nginx.exe -s quit start nginx 

即退出Nginx,而後再從新啓動它。這時候,在瀏覽器地址欄輸入https://localhost並回車。

這時候,你可能看到「您的鏈接不是私密鏈接」的提示,單擊頁面中的「高級」,並接着單擊「繼續前往m.test.com(不安全)」,就能夠看到Nginx的歡迎界面了。說明https服務器已經配置成功了。

若是你只想用https://localhost訪問這個https服務器,那麼下面的內容你就不用接着往下看了。

可是,也許你可能還想要用一個別的域名(例如:https://m.test.com)來訪問這個服務器。那麼怎麼作呢?這就須要繼續往下看了。

6、修改hosts配置,實現域名映射

要想用別的域名來訪問上文配置好的https服務器,也很簡單,修改hosts配置就能夠了。你能夠到這裏下載一個hosts管理工具——SwitchHosts。安裝號好以後,以管理員身份運行它。並添加上一個hosts項:

127.0.0.1 m.test.com 

這樣,你就能夠經過https://m.test.com來訪問配置好的https服務器了。

順便提一下,關於Mac環境下如何映射一個http路徑到一個https路徑,能夠經過Charles工具來實現。參見這裏

 

使用OpenSSL爲Nginx配置HTTPS證書

做者:admin    時間:2017-4-5 12:3:17    瀏覽: 3555
 

OpenSSL官方推薦win32可執行文件版下載:

 OpenSSL

1、證書製做

一、製做CA證書:

ca.key CA私鑰:

  • openssl genrsa -des3 -out ca.key 2048

製做解密後的CA私鑰(通常無此必要):

  • openssl rsa -in ca.key -out ca_decrypted.key

ca.crt CA根證書(公鑰):

  • openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

二、製做生成網站的證書並用CA簽名認證

在這裏,假設網站域名爲www.webkaka.com

生成www.webkaka.com證書私鑰:

  • openssl genrsa -des3 -out www.webkaka.com.pem 1024

製做解密後的www.webkaka.com證書私鑰:

  • openssl rsa -in www.webkaka.com.pem -out www.webkaka.com.key

生成簽名請求:

  • openssl req -new -key www.webkaka.com.pem -out www.webkaka.com.csr

在common name中填入網站域名,如www.webkaka.com便可生成改站點的證書,同時也可使用泛域名如*.webkaka.com來生成全部二級域名可用的網站證書。

用CA進行簽名:

  • openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in www.webkaka.com.csr -out www.webkaka.com.crt

其中,policy參數容許簽名的CA和網站證書能夠有不一樣的國家、地名等信息,days參數則是簽名時限。

若是在執行簽名命令時,出現「I am unable to access the ../../CA/newcerts directory」

修改 /etc/pki/tls/openssl.cnf 中「dir = ./CA」

而後:

  • mkdir -p CA/newcerts
  • touch CA/index.txt
  • touch CA/serial
  • echo "01" > CA/serial

再從新執行簽名命令。

最後,把ca.crt的內容粘貼到www.webkaka.com.crt後面。這個比較重要!由於不這樣作,可能會有某些瀏覽器不支持。

好了,如今https須要到的網站私鑰www.webkaka.com.key和網站證書www.webkaka.com.crt都準備完畢。接下來開始配置服務端。

2、配置Nginx服務器

新開一個虛擬主機,並在server{}段中設置:

  • listen 443;
  • ssl on;
  • ssl_certificate /path/to/www.webkaka.com.crt;
  • ssl_certificate_key /path/to/www.webkaka.com.key;

其中的路徑是剛剛生成的網站證書的路徑。

而後使用一下命令檢測配置和從新加載nginx:

    檢測配置:

  • nginx -t

    從新加載:

  • nginx -s reload

3、優化nginx配置

一、優化nginx性能

在http{}中加入:

  • ssl_session_cache shared:SSL:10m;
  • ssl_session_timeout 10m;

據官方文檔所述,cache中的1m能夠存放4000個session。

在配置https的虛擬主機server{}中加入:

  • keepalive_timeout 70;

二、有時在phpMyAdmin等程序登入後會錯誤地跳轉http的問題。

解決方法是定位至 「location ~ .*\.(php|php5)?${}」 在include fcgi.conf;或者在fastcgi_param配置後面加上:

  • fastcgi_param HTTPS on;
  • fastcgi_param HTTP_SCHEME https;

在這裏是nginx官方的關於https的文檔:

 https文檔

 

 參考:

https://www.cnblogs.com/weifeng1463/p/7943633.html

http://www.webkaka.com/tutorial/server/2017/040516/

https://www.cnblogs.com/chasewade/p/7661290.html