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
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)
- 最新评论