nginx-WebServer

来源:互联网 发布:学c4d 知乎 编辑:程序博客网 时间:2024/04/30 12:35

为nginx生成自签名ssl证书 (Storm: Verified)

openssl genrsa -des3 -out ssl.key 1024


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


由于生成时候必须输入密码。你可以输入后 再删掉。
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 
 
以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)
最后根据这2个文件生成crt证书文件
openssl x509 -req -days 3650 -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节点里加入以下配置就可以了。
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;   


Note:

ssl_certificate
syntax: ssl_certificate file
default: ssl_certificate cert.pem
context: main, server
Indicates file with the certificate in PEM format for this virtual server. The same file can contain other certificates, and also secret key in PEM format. Since version 0.6.7 the file path is relative to directory of nginx configuration file nginx.conf, but not to nginx prefix directory.


ssl_certificate_key
syntax: ssl_certificate_key file
default: ssl_certificate_key cert.pem
context: main, server
Indicates file with the secret key in PEM format for this virtual server. Since version 0.6.7 the filename path is relative to directory of nginx configuration file nginx.conf, but not to nginx prefix directory.


ssl_client_certificate
syntax: ssl_client_certificate file
default: none
context: main, server
Indicates file with certificates CA in PEM format, utilized for checking the client certificates.


=============================

  使用nginx搭建https服务器

最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略掉浏览器的不信任警报即可。下面是颁发证书和配置过程。

首先确保机器上安装了openssl和openssl-devel

#yum install openssl#yum install openssl-devel

然后就是自己颁发证书给自己

#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

至此证书已经生成完毕,下面就是配置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: 如果出现“[emerg] 10464#0: unknown directive "ssl" in /usr/local/nginx-0.6.32/conf/nginx.conf:74”则说明没有将ssl模块编译进nginx,在configure的时候加上“--with-http_ssl_module”即可^^

至此已经完成了https服务器搭建,但如何让浏览器信任自己颁发的证书呢?

今天终于研究捣鼓出来了,只要将之前生成的server.crt文件导入到系统的证书管理器就行了,具体方法:

控制面板 -> Internet选项 -> 内容 -> 发行者 -> 受信任的根证书颁发机构 -> 导入 -》选择server.crt

===================================================


  1. http://shouce.jb51.net/nginx/OptionalHTTPmodules/SSL.html (Storm: Detailed explanation)
  2. 生成带证书链的数字证书
  3. nginx配置ssl双向验证 nginx https ssl证书配置

0 0
原创粉丝点击