zoukankan      html  css  js  c++  java
  • nginx上搭建https

    nginx上配置https的条件:

    1、SSL证书和服务器私钥文件

    2、nginx支持SSL模块

    一、获取SSL证书

    网上有提供权威认证的SSL证书的网站,但多数是收费的,而且不便宜。在正式的生产环境中,强烈不建议使用免费的SSL证书,但我们这次只是用于测试,所以决定使用下免费的SSL证书。

    下面介绍几个免费的SSL证书提供商:(以下内容非原创)

    • CloudFlare SSL:CloudFlare是美国一家提供CDN服务的网站,在世界各地都有自己的CDN服务器节点,国内外很多大型公司或者网站都在使用 CloudFlare的CDN服务(百度云cdn加速在海外用的就是CloudFlare的CDN节点),当然国内站长最常用的就是CloudFlare的免费CDN,加速也很好。CloudFlare提供的免费SSL证书是UniversalSSL,即通用SSL,用户无需向证书发放机构申请和配置证书就可以使用的SSL证书,CloudFlare向所有用户(包括免费用户)提供SSL加密功能,web界面5分钟内就设置好证书,24小时内完成自动部署,为网站的流量提供基于椭圆曲线数字签名算法(ECDSA)的TLS加密服务。
    • Wosign沃通SSL:Wosign沃通是国内一家提供SSL证书服务的网站,其免费的SSL证书申请比较简单,在线开通,一个SSL证书只能对应一个域名(单一域名,非通配域名),支持证书状态在线查询协议(OCSP)。
    • StartSSL:StartSSL是StartCom公司旗下的SSL证书,提供免费SSL证书服务,且StartSSL被包括Chrome、Firefox、IE 在内的主流浏览器支持,几乎所有的主流浏览器都可以正常识别StartSSL,任何个人都可以从StartSSL中申请到免费一年的SSL证书。
    • NameCheap:NameCheap是一家领先的ICANN认可的域名注册和网站托管公司,成立于2000年。该公司提供免费DNS解析,网址转发(可隐藏原URL,支持301重定向)等服务。此外,NameCheap还提供了一年的SSL证书免费服务。
    • CloudFlare SSL和Wosign沃通SSL申请开通和安装使用:https://www.freehao123.com/cloudflare-wosign-ssl/
    • StartSSL申请:https://www.freehao123.com/startssl-ssl/
    • 在Nginx上配置NameCheap免费SSL:http://linux.it.net.cn/CentOS/course/2014/0318/520.html

    需要两个文件:

      SSL证书:.crt

      私钥文件:.key

    二、在nginx上配置支持SSL

    1、检查nginx是否安装了SSL模块

    # nginx -V
    configure arguments: --prefix=/usr/local/nginx --with-http_sysguard_module --with-http_realip_module

    这个nginx是编译安装的,编译时没有指定安装SSLL模块,需要重新编译,加上 --with-http_ssl_module

    另外,nginx需要openssl提供ssl支持,也需要检查是否已经安装了openssl。

    nginx重编译的步骤:

    1)找到安装nginx的源码根目录,并查看原编译参数。

    # cd /root/tengine-1.5.2
    # nginx -V
    configure arguments: --prefix=/usr/local/nginx --with-http_sysguard_module --with-http_realip_module

    2)重新编译nginx

    #./configure --prefix=/usr/local/nginx --with-http_sysguard_module --with-http_realip_module --with-http_ssl_module 
    # make
    注意:千万不要 make install ,否则就会覆盖安装了。

    make 后,在源码根目录的objs目录中多了一个nginx程序,就是新编译的nginx程序。

    3)备份旧的nginx程序

    # cp -a /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.bak 

    4)用新的nginx程序覆盖旧的

    # cp -a objs/nginx /usr/local/nginx/sbin/nginx

    5)测试新nginx程序是否正确

    # nginx -t
    the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    configuration file /usr/local/nginx/conf/nginx.conf test is successful

    6)平滑升级

    # nginx -s reload

    2、配置nginx server支持ssl

    1)上传SSL证书文件和私钥文件到服务器

    这里我们统一放到:/usr/local/nginx/conf/ssl 目录

    # ls /usr/local/nginx/conf/ssl/
    ca.crt  private.key

    2)在特定的server中配置SSL支持

    listen       443;
    server_name xxx.xxx.com;
    
    # 开启ssl支持
    ssl on;
    # SSL 证书 ssl_certificate
    /usr/local/nginx/conf/ssl/ca.crt;
    # 私钥文件 ssl_certificate_key
    /usr/local/nginx/conf/ssl/private.key;

    3)重启nginx服务

    # nginx -t
    # nginx -s reload

    4) 开放防火墙的 443 端口

    5)web访问,检查https是否能用

    常见的异常:

    • 提示类似这样错误,说明证书配置有问题:
    [emerg] 21482#0: PEM_read_bio_X509_AUX("/usr/local/nginx/conf/ssl/ca.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
    • 提示类似这样的错误,说明key有问题:
    [emerg] SSL_CTX_use_PrivateKey_file("/usr/local/nginx/conf/ssl/private.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
  • 相关阅读:
    智能指针的理解
    [转] weak_ptr解决shared_ptr环状引用所引起的内存泄漏
    模板实现多态的功能
    Protobuf的自动反射消息类型的方法
    [转] C++临时变量的生命周期
    C++转换函数
    [转] boost------ref的使用(Boost程序库完全开发指南)读书笔记
    c++回调编程本质
    New 和 GetMem 的不同之处
    Delphi New,Getmem,ReallocMem联系与区别
  • 原文地址:https://www.cnblogs.com/hjqjk/p/6054634.html
Copyright © 2011-2022 走看看