您的位置:首页 > 理论基础 > 计算机网络

nginx + PHP 下 添加 https 的支持

2012-12-11 09:36 375 查看

1.   创建key

server.key 可以随意修改server部分。例如:baidu.key

openssl genrsa -des3 -out server.key 2048

输入密码即可。

如果不要口令,则可用以下命令去除口令:

    openssl rsa -in server.key -out server.key
2.  创建 csr


server.key为创建key时输入的文件名:baidu.key

server.csr 可以随意修改server部分。例如:baidu.csr


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

按流程填写,如

Country Name (2 letter code) [GB]: JP      //国家 例如  :CN

State or Province Name (full name) [Berkshire]:Tokyo  // 州或省的名称,必须是全称

Locality Name (eg, city) [Newbury]:Bunkyo-ku  
// 城市名称

Organization Name (eg, company) [My Company Ltd]: BaiDu   // 公司名称

Organizational Unit Name (eg, section) :BAIDU  //项目名称

Common Name (eg, your name or your server's hostname) []:abc.com    //项目url。例如:baidu.com  不包含http://

Email Address []:youxiang@sina.com   // 注意邮件地址要和注册域名时的邮件地址一样

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:  回车

An optional company name []:  回车

3. 通过  server.key   server.csr  在相应的网站申请 证书

如: http://www.startssl.com/
http://ocsp.godaddy.com/
申请成功后会得到两个文件:

gd_bundle.crt   abc.com.crt

4.  设置nginx的配置

上传 gd_bundle.crt   abc.com.crt 文件至 nginx的配置目录下   /usr/local/nginx/conf

执行

cat abc.com.crt gd_bundle.crt > abc.com.chained.crt


Nginx的配置如下:

    server {

        listen       443;

        server_name  ttt.e.com;

        ssl                  on;

        ssl_certificate      /usr/local/nginx/conf/abc.com.chained.crt;

        ssl_certificate_key  /usr/local/nginx/conf/abc.com.key;

        ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;

        ssl_ciphers          HIGH:!aNULL:!MD5;

        location / {

            root   html;

            index  index.php;

        }

        location ~ \.php$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;

      fastcgi_param HTTPS on;

            include fastcgi.conf;

        }

    }

5.  验证

执行 

openssl s_client -connect www.godaddy.com:443

最后访问  https://abc.com  如果能看到证书的信息,而且连接都正常就OK了。

注意:

安装nginx 时要加上https模块,编译时:

./configure --with-http_sub_module --with-http_ssl_module 

可以用  /usr/local/nginx/sbin/nginx -V  来查看。

生成证书不被信任的 证书。也就是测试版测试用的,不用花钱就可以有的证书,这样的证书是不被浏览器认可的,但是 测试是没有问题的

$ cd /usr/local/nginx/conf

$ openssl genrsa -des3 -out server.key 1024

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

$ cp server.key server.key.org

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

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out

server.crt

编辑

 nginx.conf

server {

    server_name YOUR_DOMAINNAME_HERE;

    listen 443;

    ssl on;

    ssl_certificate /usr/local/nginx/conf/server.crt;

    ssl_certificate_key /usr/local/nginx/conf/server.key;

}

OK,

完成了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: