1.PHP程序员玩转Linux系列-怎么安装使用CentOS

2.PHP程序员玩转Linux系列-lnmp环境的搭建

3.PHP程序员玩转Linux系列-搭建FTP代码开发环境

4.PHP程序员玩转Linux系列-备份还原MySQL

5.PHP程序员玩转Linux系列-自动备份与SVN

6.PHP程序员玩转Linux系列-Linux和Windows安装nginx

7.PHP程序员玩转Linux系列-nginx初学者引导

创建一个HTTPS服务器

在nginx.conf配置文件中,在server块里面通过listen指令指定ssl的参数,设置好服务器证书和私钥文件的路径

server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}

服务器证书是一个公开实体,它会被发送给每一个连接过来的客户端.私钥是一个安全实体,它应该被存储在一个限制权限的文件中.但是nginx的master进程必须能够读到该私钥文件. 私钥也可以和证书放在一个文件里面.

ssl_certificate www.example.com.cert;
ssl_certificate_key www.example.com.cert;

在这个例子里面,文件的访问权限应该被限制.尽管证书和私钥在一个文件里面,只有证书会被发送给客户端.

ssl_protocols 和ssl_ciphers 指令可以被用来限制连接,只包含高版本的TLS和SSL/TLS的密码

从nginx 1.0.5版本开始,nginx默认使用ssl_protocols SSLv3 TLSv1和ssl_ciphers HIGH:!aNULL:!MD5.从nginx 1.1.13 和 1.0.12 版本开始,默认更新成了 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2

一个单一的HTTP和HTTPS服务

可以配置一个服务同时支持HTTP和HTTPS请求, 在虚拟主机中使用listen指令,一个带着ssl参数,一个不带参数.

server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
...
}

在nginx 0.7.13和更早的版本中,SSL不能被单独设置监听socket.只能通过ssl指令为全部server开启SSL,才能实现HTTP/HTTPS同时支持.为了解决这一问题,为listen指令添加了ssl参数.因此在0.7.14和之后的版本中,ssl指令不能再用了.  

基于名称的HTTPS服务

一个很普遍的问题出现了,那就是解决当在一个ip地址配置监听两个或多个HTTPS服务.

server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
...
} server {
listen 443 ssl;
server_name www.example.org;
ssl_certificate www.example.org.crt;
...
}

使用这个配置,浏览器只能接收到默认的证书,在这个例子中就是www.example.com证书.这个是因为SSL协议本身造成的.SSL的连接是在浏览器发送HTTP请求之前建立的,因此nginx不知道请求的名称.所以它只能提供默认服务的证书.

解决这一问题最好的方式是分配不同的IP地址给每一个HTTPS服务

server {
listen 192.168.1.1:443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
...
} server {
listen 192.168.1.2:443 ssl;
server_name www.example.org;
ssl_certificate www.example.org.crt;
...
}

  

使用多个名称生成SSL证书

这里有其他的方式解决上面的问题,但是每一种都有各自的缺点.一种方式是生成证书的时候更改SubjectAltName字段,比如: www.example.com 和 www.example.org 两个,但是这个字段有长度限制.

另一种方式是证书名称那里使用通配符,比如: *.example.org,但是 通配符名称只能用在一级子域名上.这个名称可以匹配www.example.org ,但是不能匹配example.org或 www.sub.example.org

这两种方式可以结合起来,在SubjectAltName字段里填上 example.org 和 *.example.org

最好把多域名证书和私钥放在配置http块中,这样所有的服务都可以继承这个配置

ssl_certificate     common.crt;
ssl_certificate_key common.key; server {
listen 443 ssl;
server_name www.example.com;
...
} server {
listen 443 ssl;
server_name www.example.org;
...
}

  

[Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS的更多相关文章

  1. [Linux] PHP程序员玩转Linux系列-lnmp环境的搭建

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 在平常的工作中,我作为PHP程序员经常要搭建一下环境,这个环境就是Linux系统下安装nginx,php,mysql这三个软件,对软件进行 ...

  2. [Linux] PHP程序员玩转Linux系列-搭建代码开发环境

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...

  3. [Linux] PHP程序员玩转Linux系列-备份还原MySQL

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是g ...

  4. [Linux] PHP程序员玩转Linux系列-自动备份与SVN

    我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...

  5. [Linux] PHP程序员玩转Linux系列-nginx初学者引导

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  6. [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  7. [Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  8. [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  9. [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

随机推荐

  1. 一个不错的windows编程网址

    http://www.zklmc.com/ 含有MFC,C#,web开发资料

  2. Redis简单配置和使用

    学到Redis中需要整理和配置的东西比较多,资源也是比较分散!这次的主要还是将知识整合一下,开发过程中所需要的资源整合一下,也方便今后涉及到这块地方的知识时,将时间大量浪费在了找这些资源上了! 一.R ...

  3. 用DapperExtensions和反射来实现一个通用搜索

    前言 搜索功能是一个很常用的功能,当然这个搜索不是指全文检索,是指网站的后台管理系统或ERP系统列表的搜索功能.常见做法一般就是在搜索栏上加上几个常用字段来搜索.代码可能一般这样实现 StringBu ...

  4. 简单总结在51cto平台的两日学习

    许久未曾静下心写东西,希望这会是一个好习惯的开始. 一次偶然的机会,大概是160415在Applestore邂逅51cto,看了点评果断下载,着实是一款优秀的学习软件. 由于最近正在用python写自 ...

  5. 把Eclipse项目转换成Maven项目

    把Maven项目转换成Eclipse项目只要使用Maven的Eclipse插件就能做到 mvn eclipse:eclipse 其实Maven的Eclipse插件也有把Eclipse项目转换成Mave ...

  6. lua和c的亲密接触

    介绍 lua和c的亲密接触,靠的是一个虚拟栈.lua通过这个虚拟栈来实现和c之间值的互传.栈上的每一个元素是一个lua值(nil,number,string...). 当lua调用c函数的时候,这个函 ...

  7. MySQL中的完整性约束条件(主键、外键、唯一、非空)

    数据库的完整性约束用来防止对数据的意外破坏,来保证数据的安全性和一致性. 主键 1.创建表时候指定主键 创建表user(id, username, age),并且id字段非空自增. CREATE TA ...

  8. Alamofire源码解读系列(六)之Task代理(TaskDelegate)

    本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用AFNetworking或者Alamofire处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很 ...

  9. 基础篇系列,JAVA的并发包 - 锁

    JAVA中主要锁 synchronized Reentrantlock ReentrantReadWriteLock 问题引入 为什么需要锁? 为什么JAVA有了synchronize还需要Reent ...

  10. ASP.NET MVC创建视图过程

    MvcHandler.ProcessRequest()   (1)获取Action执行结果:context2.Result ActionExecutedContext context2 = this. ...