使用nginx搭建https服务器
最近在研究nginx,整好遇到一個需求就是希望服務(wù)器與客戶端之間傳輸內(nèi)容是加密的,防止中間監(jiān)聽泄露信息,但是去證書服務(wù)商那邊申請證書又不合算,因為訪問服務(wù)器的都是內(nèi)部人士,所以自己給自己頒發(fā)證書,忽略掉瀏覽器的不信任警報即可。下面是頒發(fā)證書和配置過程。
首先確保機器上安裝了openssl和openssl-devel
#yum install openssl #yum install openssl-devel然后就是自己頒發(fā)證書給自己
#cd /usr/local/nginx/conf #openssl genrsa -des3 -out server.key 1024#openssl req -new -key server.key -out server.csr #openssl rsa -in server.key -out server_nopwd.key #openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt至此證書已經(jīng)生成完畢,下面就是配置nginx
server {listen 443;ssl on;ssl_certificate /usr/local/nginx/conf/server.crt;ssl_certificate_key /usr/local/nginx/conf/server_nopwd.key; }然后重啟nginx即可。
ps: 如果出現(xiàn)“[emerg] 10464#0: unknown directive "ssl" in /usr/local/nginx-0.6.32/conf/nginx.conf:74”則說明沒有將ssl模塊編譯進nginx,在configure的時候加上“--with-http_ssl_module”即可^^
至此已經(jīng)完成了https服務(wù)器搭建,但如何讓瀏覽器信任自己頒發(fā)的證書呢?
今天終于研究搗鼓出來了,只要將之前生成的server.crt文件導(dǎo)入到系統(tǒng)的證書管理器就行了,具體方法:
控制面板 -> Internet選項 -> 內(nèi)容 -> 發(fā)行者?-> 受信任的根證書頒發(fā)機構(gòu) -> 導(dǎo)入 -》選擇server.crt
原文地址
以上為原文,話說我是用在本地服務(wù)器的,然后偏偏又是windows+nginx+php,所以上面的當(dāng)然不能照搬 了,windows下怎么安裝ssl我也不記得了,這里直說跟配置https相關(guān)的。上面的兩個yum是不需要執(zhí)行了,也執(zhí)行不了,然后呢是cd切換到nginx的conf文件夾下,然后執(zhí)行openssl.exe,執(zhí)行第一條openssl的語句,生產(chǎn)為簽署的server.csr,一般應(yīng)該沒問題。執(zhí)行過程中需要輸入輸入一系列的參數(shù):
?? ? ??Country Name (2 letter code) [AU]:CN ISO 國家代碼(只支持兩位字符)
?? ? ??State or Province Name (full name) [Some-State]:ZJ 所在省份
?? ? ???Locality Name (eg, city) []:HZ 所在城市
? ? ? ? Organization Name (eg, company): 公司名稱
? ? ? ? Organizational Unit Name (eg, section) []: 組織名稱
? ? ? ? Common Name (eg, YOUR name) []: 申請證書的域名(必須和httpd.conf中serverName必須一致)
? ? ? ? Email Address []:admin@admin.com 管理員郵箱
? ? ? ? Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 交換密鑰?
? ? ? ? An optional company name []:?
? ? ? ? 注:Common Name必須和httpd.conf中serverName必須一致,否則apache不能啟動(啟動 apache 時錯誤提示為:server RSA certificate CommonName (CN) `Kedou' does NOT match server name!? )
? ? ? ? 完成簽署的server.csr配置。
執(zhí)行第二條openssl的時候,可能會報錯說找不到openssl.cnf,看清楚報錯的文件路徑,如果本地有這個文件直接復(fù)制到該報錯路徑下即可,如沒有,請自行解決,我本地用的集成環(huán)境是phpStudy,在apache的配置文件夾下有這個文件,剛開始也只是試試看的心態(tài),拿過來用,沒成想真的能生成密鑰文件server.key。
第二部解決之后后面就順利了。
部分截圖如下:
總結(jié)
以上是生活随笔為你收集整理的使用nginx搭建https服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web开发牛人访谈:你们都在用什么?
- 下一篇: 表驱动法——直接访问表示例1