Blog / 阅读

Nginx配置免费SSL证书StartSSL,解决Firefox不信任问题

by admin on 2014-03-17 13:55:24 in ,



先在StartSSL上申请免费一年的SSL证书,具体过程网上很多教程。然后把申请到的key和crt文件上传到服务器,比如/usr/local/nginx/certs/.

 Nginx配置SSL证书

直接贴上我的nginx的部分配置:

server {
        listen 443;
    server_name   526net.com www.526net.com ;
        ssl on;
        ssl_certificate /usr/local/nginx/ssl/ssl.crt;
        ssl_certificate_key /usr/local/nginx/ssl/ssl.key;
 
    if ($http_transfer_encoding ~* chunked) {
        return 444;
      }
 
    gzip on;
 
    if (-d $request_filename) {
        rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent;
    }
 
     root   /home/wwwroot/;
 
     ssi off;
     ssi_silent_errors off;
     ssi_types text/shtml;
 
     location / {
         index  index.html index.htm index.shtml index.php;
         autoindex    off;
     }
 
    location /nginx_status {
        stub_status on;
        access_log off;
    }
 
     location ~ (favicon.ico) {
         log_not_found off;
         access_log   off;
     }
 
     location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {
         expires 1y;
     }
 
     location ~* \.(js|css)$ {
         expires 7d;
     }
 
    #------------
     location ~* ^(.+)\.(php[3-9]?|phtm[l]?)(\/.*)*$ {
         set $real_script_name $1.$2;
         set $path_info $3;
 
         if (!-f $document_root$real_script_name) {
             return 404;
         }
 
          fastcgi_pass 127.0.0.1:8999;
         <strong> fastcgi_param HTTPS on;</strong>
          include enable_php.conf;
     }
}
现在重启Nginx,Chrome应该能正常显示Https.如果只想使用Https连接,可以再添加一个server,然后跳转到https

server {
        listen 80;
    server_name   526net.com www.526net.com ;
        rewrite     ^   https://$server_name$request_uri? permanent;
}
 解决Firefox不信任StartSSL证书问题

wget http://cert.startssl.com/certs/ca.pem
wget http://cert.startssl.com/certs/sub.class1.server.ca.pem
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
cat ca-certs.crt >> ssl.crt
再次重启Nginx,本想这下Firefox也应该能正常识别证书了,但是重启Nginx遇到了SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line error错误。


[emerg]: SSL_CTX_use_certificate_chain_file("/usr/local/nginx/certs/ssl.crt")
failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib)
configuration file /usr/local/nginx/conf/nginx.conf test failed
这个的意思就是server.crt读取到意外错误行.这是因为我们在合并StartSSL提供的crt证书时,直接cat到了ssl.crt里。使用vi或者nano命令打开并编辑ssl.crt,找到:

-----END CERTIFICATE----------BEGIN CERTIFICATE-----
修改为:

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
保存这个crt文件,再次重启Nginx服务,输入申请证书时私钥的密码,启动成功后,现在使用Firefox访问网站也能信任证书了。


写评论

相关文章

上一篇:每天进步一点点- lsof 命令查找指定用户、进程、端口打开的文件

下一篇:单路CPU性能排名

评论

写评论

* 必填.

分享

栏目

赞助商


热门文章

Tag 云