1、Nginx 配置 ssl 模块
默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63
,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下:
下载 Nginx 0.7.64 版本,解压 进入解压目录:

必发88官网 1

Nginx配置SSL双向验证(后台登录限制)

需求:管理后台登录限制,只允许在职人员登录,离职人员无法登录。

解决方案:Nginx配置SSL双向验证

环境          :  Ubuntu 14.04

openssl位置  :  /etc/ssl/openssl.conf

nginx版本    :  1.8.0

nginx ssl目录 :  /etc/nginx/admin


1、使用openssl实现证书中心

    (1)编辑证书中心配置文件(/etc/ssl/openssl.conf)

        dir            = /etc/ssl

    (2)创建newcerts 目录       

mkdir -p /etc/ssl/newcerts

    (3)创建证书私钥

cd /etc/ssl

## 写入初始证书序号,为4个HEX字符

echo 12A8 > serial

## 生成证书数据库

touch index.txt

## 生成crlnumber 为了注销用户 ##

echo 12A8 > crlnumber

cd /etc/ssl/private

openssl genrsa -out cakey.pem 2048

    (4)生成自签证书

cd /etc/ssl/       

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655

2、创建服务器证书

mkdir -p /etc/nginx/admin

cd /etc/nginx/admin     

openssl genrsa -out nginx.key 1024

openssl req -new -key nginx.key -out nginx.csr

openssl ca -in nginx.csr -out nginx.crt -days 3650

openssl ca -gencrl -crldays 7 -out ca.crl    #
产生crl文件,供吊销证书使用

3、创建客户端浏览器证书(例如创建用户:李雷)

mkdir -p /etc/nginx/admin/user/lilei        #创建李雷证书存放目录   

cd /etc/nginx/admin/user/lilei

openssl genrsa -out lilei.key 1024

openssl req -new -key lilei.key -out lilei.csr

openssl ca -in lilei.csr -out lilei.crt -days 3650

# 将文本格式的证书转换成可以导入浏览器的证书

openssl pkcs12 -export -clcerts -in lilei.crt -inkey lilei.key -out
lilei.p12

4、配置Nginx服务器验证

ssl                  on;

ssl_certificate        /etc/nginx/admin/nginx.crt;

ssl_certificate_key    /etc/nginx/admin/nginx.key;

ssl_client_certificate  /etc/ssl/cacert.pem;

ssl_session_timeout  5m;

ssl_verify_client on; #开户客户端证书验证

ssl_protocols  SSLv2 SSLv3 TLSv1;

ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers  on;

ssl_crl /etc/nginx/admin/ca.crl;  #启用吊销证书检查

5、撤销用户证书

cd /etc/ssl/

grep “lilei” index.txt    类似如下

V      250817084430Z          12AC    unknown
/C=CN/ST=FUJIAN/O=xxx/OU=xxxx/CN=xxxxx/emailAddress=xxxxx

可得 值为12AC

cd  /etc/ssl/newcerts

openssl ca -revoke 12AC.pem                ##完成注销

    然后查看index.txt  可以看到V变成R

   
必须注意的一点是,必须更新此文件,不然撤销证书后依然能通过验证。另外我们设置crl文件过期时间为7天,如果7天后,我们未更新crl文件,nginx服务器将拒绝所有证书匹配。故我们还应开启crontab,定期更新crl文件

    定时任务脚本如下:

#!/bin/sh

NGINX_SSL_PATH=/etc/nginx/admin

cd $NGINX_SSL_PATH

openssl ca -gencrl -crldays 7 -out ca.crl

DATE_NOW1=$(/bin/date +%Y-%m-%d\ %H:%M:%S)

echo “$DATE_NOW1 has success updata” >>
/home/cron/updata_cakey.log

/etc/init.d/nginx reload

更多Nginx相关教程见以下内容:

CentOS 6.2实战部署Nginx+MySQL+PHP

使用Nginx搭建WEB服务器

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

CentOS 6.3下Nginx性能调优

CentOS 6.3下配置Nginx加载ngx_pagespeed模块

CentOS 6.4安装配置Nginx+Pcre+php-fpm

Nginx安装配置使用详细笔记

Nginx日志过滤 使用ngx_log_if不记录特定日志

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:

)
需求:管理后台登录限制,只允许在职人员登录,离职人员无法登录。
解决方案:Nginx配置SSL双向验证…

复制代码 代码如下:

4月底在NameCheap用优惠码注册了一个JunGeHost.com,并且免费赠送了一年的Positive
SSL,于是顺便搞上SSL,这样传输数据也更加安全。

wget
tar zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64

SSL需要有一个独立IP,也就是一个独立IP只能对应一个SSL。(什么是SSL?)

如果要更改header信息的话,

一、准备工作

1、需要Nignx已经编译ssl
模块(lnmp一键安装包已经编译安装上),如果没有需要重新编译,方法可以参考Nginx无缝升级。

2、再NameCheap已注册/转移域名或购买主机产品,且购买是在购物车上添加了免费SSL。

复制代码 代码如下:

二、使用OpenSSL生成证书 (注:一下蓝色加粗字为执行时输入的命令!)

1、生成RSA密钥

li88-99:~#cd /usr/local/nginx/conf/
li88-99:/usr/local/nginx/conf#openssl genrsa -out jungehost.pem 2048

Generating RSA private key, 2048 bit long modulus
…..+++
.+++
e is 65537 (0x10001)

2、生成一个证书请求

li88-99:/usr/local/nginx/conf#openssl req -new -key jungehost.pem -out
jungehost.csr
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a
DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,

vi src/core/nginx.h
#define NGINX_VERSION “0.7.62”
#define NGINX_VER “nginx/” NGINX_VERSION

If you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [AU]:CN//输入国家简写
State or Province Name (full name) [Some-State]:ShanDong//省市
Locality Name (eg, city) []:JiNan //城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:JunGe Host
//组织名称或公司名称
Organizational Unit Name (eg, section) []: //可以不用填
Common Name (eg, YOUR name) []:jungehost.com
//输入要配置ssl的域名,如jungehost.com,注意jungehost.com
和www.jungehost.com 属于不同的域名。
Email Address
[]:[email protected]
//输入邮箱

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: //可以不用填
An optional company name []: //可以不用填

按上面的注释输入相关信息后,会在目录下面生成jungehost.csr这个文件,执行cat
jungehost.csr
将下面以—–BEGIN CERTIFICATE REQUEST—–开头到—–END CERTIFICATE
REQUEST—–结尾的全部内容复制下来。需要使用这个jungehost.csr去NameCheap生成数字证书。

li88-99:/usr/local/nginx/conf#cat jungehost.csr
—–BEGIN CERTIFICATE REQUEST—–
MIIBzTCCATYCAQAwgYwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhTaGFuRG9uZzEO
MAwGA1UEBxMFSmlOYW4xEjAQBeNVBAoTCUp1bkdlSG9zdDEOMAwGA1UECxMFanVu
Z2UxEjAQBgNVBAMTCVNoaUp1baBMaTEiMCAGCSqGSIbcDQEJARYTYWRtaW5AanVu
Z2Vob3N0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0R9hda1NJdoO
2tbvHevVY3fdpdn8ESpSewHC9yc9zVoc0tz9Ww5EfpDV9L222xv/Z8DlDf2pUfIG
X7F15qIQJZ/VCUDNxS5Y7bjNTzduMq8yQnqkB6h/dpnlFTJlDQrAl6vaoOhBcB5L
hMLAQBf1V8800MIn3nfxb9E6aoydSk8CAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GB
AJxQOaFHra/ILos8+HO8Wn/2bhfWAUR4ovyRGKMB/n0BQlHPfNhKbILRv9KI5EUL
dc6HCf3AALetjNiPHrfpJOCj4Ljqchu3WeodthuwRd9hzhZHCf43UiopofbfRzMp
lmAJFuUwN93IgFSrslCh66JaQceNa5x/TQIsmviuKZGC
—–END CERTIFICATE REQUEST—–

上面的版本号和nginx自己修改
编译
[code]
./configure –user=www –group=www –prefix=/usr/local/nginx
–with-http_stub_status_module –with-http_ssl_module
make
make
切记不要 make install

三、NameCheap生成数字证书

1、登录NameCheap.com后,会在后台首页提示你有一个未激活的SSL认证产品,如下图:

必发88官网 2

点击上面的“SSL Certificates Page”链接。

2、激活SSL证书

必发88官网 3

点击“Activate Now”即可激活SSL产品。

3、向CA(数字证书颁发机构)提交OpenSSL生成的证书。

必发88官网 4

Web服务器软件没有Nginx,只有选择other,下面的csr,填写jungehost.csr的内容,即前面要求复制下来的以—–BEGIN
CERTIFICATE REQUEST—–开头到—–END CERTIFICATE
REQUEST—–结尾的内容。

4、选择域名管理员邮箱,邮箱必须是能够接收到邮件。同时确认一下生成证书时填写的信息是否正确。

必发88官网 5

5、提交订单

必发88官网 6

检查一下上面的信息是否正确,然后点击“Submit Order”。

必发88官网 7

6、邮箱验证

过几分钟或10几分钟邮箱里就会受到一封Comodo寄来的验证邮件,如下图:

必发88官网 8

必发88官网 9

点开上面的链接,然后输入上面的优惠码。

必发88官网 10

必发88官网 11

验证完成!

7、验证完成后几分钟就会受到Comodo寄来的数字证书。

必发88官网 12

因为是小网站,用不着平滑升级,直接 killall -HUP nginx 重启 nginx
即可。
OK,升级并且安装好 ssl 模块完毕,这里我把 Nginx 修改成了
zoulu,于是乎:
必发88官网 13
怎么样,很有个性吧!

四、Nginx虚拟主机设置SSL

1、下载邮件附件里的jungehost_com.zip,上传到/usr/local/nginx/conf
下面。

必发88官网 14

一般情况下,直接用证书签发机构颁发的 crt 文件即可,比如
jungehost_com.crt ,但是有很多证书签发机构默认在 Firefox
中文版下是不会信任的,经过仔细研究,终于发现,原来得把证书签发机构办法给你的
crt 文件也放入才行。(摘自:Showfom)

方法如下:

合并 PositiveSSLCA.crt (证书签发机构的 crt) 和 jungehost_com.crt
(自己域名的 crt)

cat jungehost_com.crt >> PositiveSSLCA.crt

mv PositiveSSLCA.crt jungehost_com.crt

或者直接用记事本打开,然后复制 PositiveSSLCA.crt 里面所有的内容到
jungehost_com.crt 最下方即可。

2、Nginx虚拟主机添加SSL

server
{
listen 443;
server_name jungehost.com www.jungehost.com;
index index.html index.htm index.php;
root /home/wwwroot/jungehost;

ssl on;
ssl_certificate jungehost_com.crt;
ssl_certificate_key jungehost.pem;

location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param HTTPS on;
include fcgi.conf;
}
access_log off;
}

将以上内容按照自己的配置修改,添加到在nginx.conf 里任意一个server
{}的后面即可。

然后执行/usr/local/nginx/sbin/nginx -t 检查配置是否有错误,执行kill -HUP
`cat /usr/local/nginx/logs/nginx.pid`重启。

li88-99:/usr/local/nginx/conf#必发88官网,/usr/local/nginx/sbin/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
li88-99:/usr/local/nginx/conf#kill -HUP `cat
/usr/local/nginx/logs/nginx.pid`

2、使用 OpenSSL 生成证书

五、测试

在Chrome、Firefox、IE7下面访问

PS:需要SSL且不想花费太多的话,可以选择NameCheap注册或转入域名获得免费SSL,VPS侦探也会在网站上不定期更新一些NameCheap的域名优惠码。

>>转载请注明出处:VPS侦探本文链接地址:

SSL,于是顺便搞上SSL,这样传输数据也更加安全。 SSL需要有一…

①、生成RSA密钥的方法
openssl genrsa -out privkey.pem 2048

有的证书要 1024 的,所以得:
openssl genrsa -out privkey.pem 1024

②、生成一个证书请求
openssl req -new -key privkey.pem -out cert.csr

会提示输入省份、城市、域名信息等,重要的是,email
一定要是你的域名后缀的,比如 webmaster@zou.lu 并且能接受邮件!

这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件

(来源:

直接 cat cert.csr

得到一大串字符,比如这样:
—–BEGIN CERTIFICATE REQUEST—–
MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH
EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ
KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4k
VkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+
CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB
oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4
FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNy
pCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1
BfRuJnA=
—–END CERTIFICATE REQUEST—–

提交给你的 ssl
提供商即可,一般半个钟头到一天时间就会发给你证书,如图:
必发88官网 15
把所有文件全部上传到一个特定的目录,比如我是上传到 /root/zoulu/

这里,zoulukey.pem 和 zoulucert.csr 是自己在 VPS
生成的,剩下的都是证书签发机构颁发的。

一般情况下,直接用证书签发机构颁发的 crt 文件即可,比如 zou_lu.crt
,但是有很多证书签发机构默认在 Firefox
中文版下是不会信任的,经过仔细研究,终于发现,原来得把证书签发机构办法给你的
crt 文件也放入才行。

方法如下:

合并 PositiveSSLCA.crt (证书签发机构的 crt) 和 zou_lu.crt (自己域名的
crt)

cat zou_lu.crt >> PositiveSSLCA.crt

mv PositiveSSLCA.crt zou_lu.crt

或者直接用记事本打开,然后复制 PositiveSSLCA.crt 里面所有的内容到
zou_lu.crt 最下方即可。

(来源:

③、修改 Nginx 配置

listen 443;
server_name zou.lu;
index index.html index.htm index.php;
root /home/zoulu;
error_page 404 403 ;

ssl on;
ssl_certificate /root/zoulu/zou_lu.crt;
ssl_certificate_key /root/zoulu/zoulukey.pem;

其他的配置信息和一般站点的一样,不再重复。
四、访问测试结果

在 Firefox 英文版 / Chrome / Opera / Safari / IE 6、7、8 下均没问题,
在 Firefox 3.5.7
中文版下没问题,遇到问题的童鞋,检查你的系统时间,要是还不信任,那我也不是很清楚了,抱歉能力有限。
五、如何获得免费的证书

的证书是 PositiveSSL 签发的,这是一家 Comodo 的 Reseller
,目前可以通过如下途径获得:

去 NameCheap.com
注册、转移一个域名或者购买一款空间就能获得,而且是免费一年的哦!

需要注意的是,NameCheap 注册后颁发的证书没有证书签发机构的
PositiveSSLCA.crt ,这里我就放一个,为了大家安装方便:
—–BEGIN CERTIFICATE—–
MIIFAzCCA+ugAwIBAgIQTM1KmltFEyGMz5AviytRcTANBgkqhkiG9w0BAQUFADCB
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
SGFyZHdhcmUwHhcNMDYwOTE4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjBxMQswCQYD
VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT
YWxmb3JkMRowGAYDVQQKExFDb21vZG8gQ0EgTGltaXRlZDEXMBUGA1UEAxMOUG9z
aXRpdmVTU0wgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9T3lY
IpPJKD5SEQAvwKkgitctVR4Q57h/4oYqpOxe6eSSWJZUDfMXukGeFZFV78LuACAY
RYMm3yDMPbOhEzEKIVx5g3mrJBVcVvC0lZih2tIb6ha1y7ewwVP5pEba8C4kuGKe
joteK1qWoOpQ6Yj7KCpNmpxIT4O2h65Pxci12f2+P9GnncYsEw3AAcezcPOPabuw
PBDf6wkAhD9u7/zjLbTHXRHM9/Lx9uLjAH4SDt6NfQDKOj32cuh5JaYIFveriP9W
XgkXwFqCBWI0KyhIMpfQhAysExjbnmbHqhSLEWlN8QnTul2piDdi2L8Dm53X5gV+
wmpSqo0HgOqODvMdAgMBAAGjggFuMIIBajAfBgNVHSMEGDAWgBShcl8mGyiYQ5Vd
BzfVhZadS9LDRTAdBgNVHQ4EFgQUuMoR6QYxedvDlMboGSq8uzUWMaQwDgYDVR0P
AQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwewYDVR0fBHQwcjA4oDagNIYy
aHR0cDovL2NybC5jb21vZG9jYS5jb20vVVROLVVTRVJGaXJzdC1IYXJkd2FyZS5j
cmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9VVE4tVVNFUkZpcnN0LUhh
cmR3YXJlLmNybDCBhgYIKwYBBQUHAQEEejB4MDsGCCsGAQUFBzAChi9odHRwOi8v
Y3J0LmNvbW9kb2NhLmNvbS9VVE5BZGRUcnVzdFNlcnZlckNBLmNydDA5BggrBgEF
BQcwAoYtaHR0cDovL2NydC5jb21vZG8ubmV0L1VUTkFkZFRydXN0U2VydmVyQ0Eu
Y3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAdtOf5GEhd7fpawx3jt++GFclsE0kWDTGM
MVzn2odkjq8SFqRaLZIaOz4hZaoXw5V+QBz9FGkGGM2sMexq8RaeiSY9WyGN6Oj5
qz2qPMuZ8oZfiFMVBRflqNKFp05Jfdbdx4/OiL9lBeAUtTF37r0qhujop2ot2mUZ
jGfibfZKhWaDtjJNn0IjF9dFQWp2BNStuY9u3MI+6VHyntjzf/tQKvCL/W8NIjYu
zg5G8t6P2jt9HpOs/PQyKw+rAR+lQI/jJJkfXbKqDLnioeeSDJBLU30fKO5WPa8Y
Z0nf1R7CqJgrTEeDgUwuRMLvyGPui3tbMfYmYb95HLCpTqnJUHvi
—–END CERTIFICATE—–

你也可以试试 Startssl 的证书,缺点是在旧电脑,没有更新的情况下,IE
6是绝对不信任他的,详见:

最后声明一点,受信任的 ssl
证书必须有独立IP,或者说,一个IP只能对应一个域名的证书,爱玩的朋友可以弄一个玩玩。

您可能感兴趣的文章:

  • Nginx服务器中关于SSL的安全配置详解
  • 在Nginx服务器中启用SSL的配置方法
  • nginx配置ssl双向验证的方法
  • Linux下Nginx安全证书ssl配置方法
  • Nginx+SSL+Node.js运行环境配置教程
  • Nginx服务器的SSL证书配置以及对SSL的反向代理配置
  • 对Nginx支持SSL的性能进行优化的方法
  • Nginx启动SSL功能,并进行功能优化详细介绍
  • 针对OpenSSL安全漏洞调整Nginx服务器的方法
  • Nginx配置SSL证书监听443端口

相关文章