[Linux] PHP程序员玩转Linux体系-Nginx中的HTTPS

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;
    ...
}

  

 

网站地图xml地图