利用nginx搭建https

生成證書

1.生成私鑰html

openssl genrsa -des3 -out server.key 2048

會有兩次要求輸入密碼,輸入同一個便可linux

而後你就得到了一個server.key文件. 之後使用此文件(經過openssl提供的命令或API)可能常常回要求輸入密碼,若是想去除輸入密碼的步驟可使用如下命令:nginx

openssl rsa -in server.key -out server.key

2.建立服務器證書的申請文件server.csr,運行:web

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

其中Country Name填CN,Common Name填主機名也能夠不填,若是不填瀏覽器會認爲不安全.(例如你之後的url爲https://abcd/xxxx....這裏就能夠填abcd),其餘的均可以不填.瀏覽器

3.建立ca證書緩存

openssl req -new -x509 -key server.key -out ca.crt -days 3650

此時,你能夠獲得一個ca.crt的證書,這個證書用來給本身的證書籤名.安全

4.建立自當前日期起有效期爲期十年的服務器證書server.crt:服務器

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

5.ls你的文件夾,能夠看到一共生成了5個文件:session

ca.crt ca.srl server.crt server.csr server.key

其中,server.crt和server.key就是你的nginx須要的證書文件.url

配置nginx

server {
  listen       443 ssl;
  server_name  localhost;


	#爲一個server開啓ssl支持
	ssl                  on;
 	#爲虛擬主機指定pem格式的證書文件
	ssl_certificate      /home/wangzhengyi/ssl/wangzhengyi.crt;
	#爲虛擬主機指定私鑰文件
	ssl_certificate_key  /home/wangzhengyi/ssl/wangzhengyi_nopass.key;
	#客戶端可以重複使用存儲在緩存中的會話參數時間
	ssl_session_timeout  5m;
	#指定使用的ssl協議
	ssl_protocols  SSLv3 TLSv1;
	#指定許可的密碼描述
	ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
	#SSLv3和TLSv1協議的服務器密碼需求優先級高於客戶端密碼
	ssl_prefer_server_ciphers   on;
  location / {
       root   /usr/share/nginx/html;
       index  index.html index.htm;
   }
}

配置完後從新加載配置文件便可

遇到的坑: 配置完nginx後可能遇到SELinux權限問題
解決辦法:
1、查看SELinux狀態:

sestatus

若是SELinux status參數爲enabled即爲開啓狀態

2、關閉SELinux:

一、臨時關閉(不用重啓機器):

setenforce 0

二、永久關閉.修改配置文件須要重啓機器:

修改/etc/selinux/config 文件

將SELINUX=enforcing改成SELINUX=disabled

重啓機器便可

生成公鑰給客戶端(安卓、web...)

openssl rsa -in server.key -pubout -out server.pem
相關文章
相關標籤/搜索