奔牛网>服务器>nginx>>Nginix开启SSL支持HTTPS访问(使用Let's Encrypt免费证书)
2017年05月19日

Nginix开启SSL支持HTTPS访问(使用Let's Encrypt免费证书)

关于SSL和HTTPS上一篇关于服务器自签名的文章已经介绍过,这里就不详细说明了,感兴趣的,可以查阅本站:Nginix开启SSL支持HTTPS访问(自签名方法)

Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。
Let's Encrypt已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被Mozilla、Google、Microsoft和Apple等主流的浏览器所信任,你只需要在Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let's Encrypt安装简单,目前看来推广的很顺利,确实帮助全球互联网快速进入HTTPS时代了。

这里介绍一下使用NGINX如何配置使用Let's Encrypt的证书


一、安装NGINX
#yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
#cd /usr/local
#wget http://nginx.org/download/nginx-1.13.0.tar.gz
#tar –zxvf nginx-1.13.0.tar.gz
进入nginx 文件夹目录执行以下命令:
./configure --prefix=/usr/local/nginx1.13 --with-http_stub_status_module --with-http_ssl_module

加了两项编译参数,给nginx加上http_stub_status_module模块和http_ssl_module模块

如果没有配置ssl模块,开启SSL参数后nginx会提示错误:nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf)

–prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
–with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
–with-http_stub_status_module : 用来监控 Nginx 的当前状态

配置后输入以下命令:

make && make install

二、如果你已经安装过nginx,只是没加入http_ssl_module,这个SSL模块,那可以这么操作

1、切换到源码包:
#cd /usr/local/src/nginx-1.13.0

2、查看nginx原有的模块
#/usr/local/nginx/sbin/nginx -V
在configure arguments:后面显示的原有的configure参数如下:

--prefix=/usr/local/nginx --with-http_stub_status_module
那么我们的新配置信息就应该这样写:

#./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modul

运行上面的命令即可,等配置完

配置完成后,运行命令

#make

这里不要进行make install,否则就是覆盖安装

然后备份原有已安装好的nginx

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

然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)

#service nginx stop
#cp ./objs/nginx /usr/local/nginx/sbin/
然后启动nginx,仍可以通过命令查看是否已经加入成功
#service nginx start

#/usr/local/nginx/sbin/nginx -V 


三、开始配置Let‘s Encrypt
Let’s Encrypt官网推荐大家使用Certbot来安装
系统要求:官方文档上已经写出支持python2.6或2.7的操作系统上,python3.x有望在未来支持,如果是2.7以上SSL证书会自动安装,不用手动的;需要使用Root账户安装,有写入文件/etc/letsencrypt, /var/log/letsencrypt, /var/lib/letsencrypt的权限,安装时需要使用80和443端口

1、保证你申请SSL的域名和服务器的IP是一致的,即域名确实是解析到你的服务器上的,可以使用nslookup命令查询。

#nslookup www.yourwebsite.com
Let’s Encrypt在给你分配证书时,会检查你所在的服务器是否和域名解析的服务器一致。

2、安装Git 和bc ,并从github上将代码克隆到本地
#yum –y git bc
#git clone https://github.com/certbot/certbot /opt/certbot-master


3、安装环境支持
因为certbot对Debian系统支持最好,可以完成自动检测并安装相应的软件。如果你是使用其它的Linux系统,Redhat或CentOS 6可能需要配置EPEL软件源,Python需要2.7版本以上,如果发现运行第4步出错,可能就是没有安装支持环境,可以回来这里安装
# CentOS 6
yum install centos-release-SCL && yum update
yum install python27
scl enable python27 bash
yum install python27-python-devel python27-python-setuptools python27-python-tools python27-python-virtualenv
yum install augeas-libs dialog gcc libffi-devel openssl-devel python-devel
顶(2)
踩(0)
最新评论