1.SSL模块
nginx的https协议需要ssl模块的支持,我们在编译nginx时使用–with-http_ssl_module参数加入SSL模块。还需要服务器私钥,服务器证书,如果是公司对外环境,这个证书需要购买第三方的权威证书,否则用户体验得不到保障
2.检查Nginx的SSL模块是否安装
[root@c6 ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.6.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-pcre --with-http_ssl_module --with-http_stub_status_module
3.准备私钥和证书
3.1创建服务器私钥
[root@c6 ~]# cd /usr/local/nginx/conf/ [root@c6 conf]# mkdir key [root@c6 conf]# cd key [root@c6 key]# openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus ..................++++++ ..............++++++ e is 65537 (0x10001) Enter pass phrase for server.key: ##输入一个密码 Verifying - Enter pass phrase for server.key: #再次输入
3.2签发证书
[root@c6 key]# openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:SH Locality Name (eg, city) [Default City]:SH Organization Name (eg, company) [Default Company Ltd]:YJS Organizational Unit Name (eg, section) []:SA Common Name (eg, your name or your server's hostname) []:Web Email Address []:szk5043@foxmail.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:root An optional company name []:root
3.3 删除服务器私钥口令
[root@c6 key]# cp server.key server.key.ori [root@c6 key]# openssl rsa -in server.key.ori -out server.key Enter pass phrase for server.key.ori: writing RSA key
3.4生成使用签名请求证书和私钥生成自签证书
[root@c6 key]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Signature ok subject=/C=CN/ST=SH/L=SH/O=YJS/OU=SA/CN=Web/emailAddress=szk5043@foxmail.com Getting Private key
3.5开启Nginx SSL
[root@c6 ~]# vim /usr/local/nginx/conf/vhosts/szk.conf server { server_name www.szk.com; listen 80; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443; server_name www.szk.com; index index.html index.htm index.php; root /data/www; ssl on; ssl_certificate key/server.crt; ssl_certificate_key key/server.key; location ~ \.php$ { include fastcgi_params; #fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name; } }
#把80端口的访问自动跳转到433端口
[root@c6 ~]# /etc/init.d/nginx restart Stopping Nginx: [ OK ] Starting Nginx: [ OK ] [root@c6 ~]# netstat -tnlup | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1504/nginx tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1504/nginx
4.测试
参考http://825536458.blog.51cto.com/4417836/1782847