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       ;
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] #: 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)

nginx上搭建https的更多相关文章

  1. Nginx上部署HTTPS

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev,且ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/, ...

  2. Nginx上部署HTTPS + HTTP2

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so ...

  3. nginx+letsencrypt搭建https站点

    1. 申请好自己的域名 dockerhub.xxx.com,并解析好IP. 2. 安装nginx(默认开通了http) ,修改 server_name dockerhub.xxxx.com; 启动. ...

  4. nginx上搭建HLS流媒体服务器

    http://blog.csdn.net/cjsafty/article/details/7922849 简介:HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTT ...

  5. 用OpenSSL生成自签名证书在IIS上搭建Https站点(用于iOS的https访问)

    前提: 先安装openssl,安装有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.这里推荐第一种. 安装包:http://slproweb.com/products/ ...

  6. OpenSSL使用1(用OpenSSL生成自签名证书在IIS上搭建Https站点)(用于iOS的https访问)

    前提: 先安装openssl,安装有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.这里推荐第一种. 安装包:http://slproweb.com/products/ ...

  7. Linux上搭建https服务器

    https原理: 步骤:1.客户端浏览器向服务器发送如下信息:(1)客户端支持的SSL/TLS协议的版本号(2)密钥算法套件(3)客户端产生的随机数,用于稍后生成"会话密钥"2.服 ...

  8. nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器

    本文概要: nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择.本文介绍了一种简易方法快速搭建rtmp流媒体服务器,也叫rtsp转播,数据源不是读取文件,而是采用 ...

  9. nginx http转 https

    场景 项目前期使用http,后期为了安全方面的考虑,启用了https.项目架构:前端使用nginx作为多个tomcat实例的反向代理和负载均衡.实际上只需要在nginx上启用https即可,使客户端与 ...

随机推荐

  1. MyBatis 基础入门

    MyBatis 是一个半自动化的持久层的框架,能让开发者专注SQL本身 JDBC 连接数据库的硬编码问题,通过config,mapper配置文件解决 Mybatis开发需要关注的文件 l POJO类( ...

  2. css3小叮当(转载)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 普通平衡树 Splay

    Code: #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ...

  4. Windows GUI程序自动化之pywinauto

    一. pywinauto知识点总结 官方英文版文档网址:https://pywinauto.readthedocs.io/en/latest/index.html 1.1 pywinauto的安装与配 ...

  5. 训练1-A

    一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和 ...

  6. FCN图像分割

    一. 图像语义分割 传统的图像分割方法主要包括以下几种: 1)基于边缘检测 2)基于阈值分割 比如直方图,颜色,灰度等 3)水平集方法 这里我们要说的是语义分割,什么是语义分割呢?先来看张图: 将目标 ...

  7. [JAVA]比毫秒System.currentTimeMillis()更精确的时间戳(纳米级时间戳)

     纳秒 ns(nanosecond):纳秒, 时间单位.一秒的10亿分之中的一个,即等于10的负9次方秒. 经常使用作 内存读写速度的单位,其前面数字越小则表示速度越快. 1纳秒=1000 皮秒 ...

  8. redis代码解析-dictionary类型

    dict本质上是为了解决算法中的查找问题(Searching),一般查找问题的解法分为两个大类:一个是基于各种平衡树,一个是基于哈希表. redis中的dict传统的哈希算法类似,它采用某个哈希函数从 ...

  9. 基于STM32的学习型通用红外遥控设备的设计实现(三)

    CPU: STM32 调试平台: STM32F103ZET和STM32F103VBT 软件平台: Keil uVision4 电路设计: Altium Designer v6.9 http://blo ...

  10. node 上传文件 http client to post file

    node做http client 发送post数据是很容易的事情,但要上传文件就不是太容易了主要是因为上传文件的报文和普通post是不太一样的 要了解http post可以看下这个 https://i ...