CentOS Nginx 安装Let’s Encrypt 免费ssl证书

Let’s Encrypt

随着现在启用SSL证书的网站越来越多,装逼的光环已经黯淡了很多。但是现在运营商劫持越来越厉害了,我个人的域名,同样的配置,没启用SSL证书的经常无法访问。一些博友的网站我也经常无法访问,主要是广东电信太坑爹了,启用https可以避免这个问题。

Let’s Encrypt 这个免费、自动化、开放的证书签发服务。虽然是免费证书,但是十分给力。我也参考了ququ的文章实际体验了一下,虽然最后成功了,但申请过程中还是踩了不少坑,本文在详细介绍下安装方法以及可能遇到的错误。我的其他域名wpista.comgalfond.com都申请了该证书。

虚拟主机上我没研究能否安装,但是自动续签这个应该只能在VPS上进行。其实阿里云非常便宜,选择青岛机房的最低配,一年282,再使用我的9折码AMTU1Y,一年254,流量费可以忽略不计。图片存储选择又拍云,每天1分钱,偶尔出现个故障会返你1元代金券,基本啥上也算是完全免费了。这个价位应该比一些虚拟主机还便宜,至于选择就看你自己了。

我的服务器环境为Centos 6.5 军哥lnmp 一键安装包。没有使用Let’s Encrypt 官网提供的工具来申请证书,而是用了acme-tiny 这个更为小巧的开源工具。

创建帐号和 CSR 文件

如果多个域名请注意修改相应前缀区分,避免造成证书混乱。

首先ssh登录你的服务器

mkdir ssl/

cd ssl

openssl genrsa 4096 > galfond_account.key

openssl genrsa 4096 > galfond_domain.key

openssl req -new -sha256 -key galfond_domain.key -subj "/" -reqexts SAN -config <(cat /usr/local/openssl/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:galfond.com")) > galfond_domain.csr

执行这一步时,可能会提示找不到/etc/ssl/openssl.cnf文件,其实是openssl配置文件的位置不对,修改下位置即可,可用下面的命令查找文件位置find / -name "openssl.cnf",找到后替换即可。

配置验证服务

我们知道,CA 在签发 DV(Domain Validation)证书时,需要验证域名所有权。传统 CA 的验证方式一般是往 admin@yoursite.com 发验证邮件,而 Let’s Encrypt 是在你的服务器上生成一个随机验证文件,再通过创建 CSR 时指定的域名访问,如果可以访问则表明你对这个域名有控制权。

首先创建用于存放验证文件的目录,例如:

mkdir /home/wwwroot/challenges/

然后修改你的Nginx 域名配置文件并重新载入服务

server {
    server_name www.yoursite.com yoursite.com;

    location ^~ /.well-kNown/acme-challenge/ {
        alias /home/wwwroot/challenges/;
        try_files $uri =404;
    }

    location / {
        rewrite ^/(.*)$ https://yoursite.com/$1 permanent;
    }
}

获取网站证书

下载脚本并执行

wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py
python acme_tiny.py --account-key ./galfond_account.key --csr ./galfond_domain.csr --acme-dir /home/wwwroot/challenges/ > ./galfond_signed.crt

如果你的Python 版本为2.6可能会出现argparse没安装的错误,需要安装一下。

wget https://pypi.python.org/packages/source/a/argparse/argparse-1.4.0.tar.gz#md5=08062d2ceb6596fcbc5a7e725b53746f

tar -xzvf argparse-1.4.0.tar.gz

cd argparse

python setup.py install

easy_install argparse

pip install argparse

再重新执行命令即可,如果出现以下错误,那应该是Nginx 配置问题,确定目录是否正确,域名是否正确绑定等。

ValueError: Wrote file to /home/xxx/www/challenges/oJbvpIhkwkBGBAQUklWJXyC8VbWAdQqlgpwUJkgC1Vg,but Couldn't download http://www.yoursite.com/.well-kNown/acme-challenge/oJbvpIhkwkBGBAQUklWJXyC8VbWAdQqlgpwUJkgC1Vg

搞定网站证书后,还要下载 Let’s Encrypt 的中间证书。在 Nginx 配置中,需要把中间证书和网站证书合在一起:

wget -O - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > intermediate.pem
cat galfond_signed.crt intermediate.pem > galfond_chained.pem

中间证书都是一样的,多个域名无需重复下载。

最终,修改 Nginx 中有关证书的配置并 reload 服务即可:

ssl_certificate /root/ssl/galfond_chained.pem;
ssl_certificate_key /root/ssl/galfond_domain.key;

详细配置可以参考我以前写的文章

Nginx HTTPS 详细配置郑重声明:本人不精通网络安全,本文内容为本文摸爬滚打自己摸索完成,请酌情参考。 我一度以为只要可以通过https访问网站SS...
1 likes,17.53k reads.

配置 crontab 及自动更新

如果没有安装crontab 则需要先安装一下

yum install -y vixie-cron

确认是否安装成功:

crontab -l

启动

service crond start

新建renew.sh

#!/bin/bash

cd /root/ssl/
python acme_tiny.py --account-key galfond_account.key --csr galfond_domain.csr --acme-dir /home/wwwroot/challenges/ > galfond_signed.crt || exit
wget -O - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > intermediate.pem
cat galfond_signed.crt intermediate.pem > galfond_chained.pem
service Nginx reload

保存后执行

chmod a+x renew.sh

增加脚本执行权限,然后再执行

crontab -e

添加

0 0 1 * * /root/renew.sh >/dev/null 2>&1

注:需在root帐号下执行,注意脚本位置。

总体来说Let’s Encrypt 相当不错,我给我的好几个域名都申请了该证书,应该没有任何问题了,有问题欢迎留言和我交流。

CentOS Nginx 安装Let’s Encrypt 免费ssl证书的更多相关文章

  1. ios – 应该加密APNS令牌吗?

    所以,我想知道,因为用户将APNS令牌发送给APNS提供商以便接收推送通知,是否应该加密令牌?另外,我认为根据APNS令牌识别设备是不可能的?因此,我想确保,如果有人从我的一个客户端嗅探推送通知注册...>他仍然必须获得我的推送证书才能以任何方式打扰我的客户>他知道有人对这些信息感兴趣,但无法确定我的客户是谁我可以放心吗?

  2. iOS Enterprise Deployement:单击itms-services链接会导致“无法连接到[域]”错误

    解决方法我有这个问题,这里没有任何记录的解决方案,或者在其他答案中,没有为我工作.使用正确的SSL证书,可以在目标设备上的safari中加载plist,没有任何问题.但是,尝试使用“itms-services://…”链接进行安装将始终失败,并显示“无法连接到[域]”错误.问题是Web服务器上未配置中间SSL证书.Web浏览器没有问题,SSL有效,但将设备连接到Mac,并通过XCode中的设备面板查看日志显示以下错误:在Apache上安装中间SSL证书解决了这个问题.

  3. ios – 我可以使用自签名SSL证书服务器在空中部署企业应用吗?

    iOS7.1之后,如果我们要通过空中部署我们的Enterprise应用程序,则manifest.plist文件的URL必须是HTTPS.例如:在我的服务器中,我使用自签名SSL证书.当我点击iPhone上的URL时,它表示无法连接到并记录典型的所以,我想知道我是否可以使用自签名SSL证书?如果可以,我如何解决我遇到的问题的问题?

  4. ios – 为什么一些iphone应用程序不会完成与Charles Proxy的ssl握手?

    我正在使用CharlesProxy查看从我的iPhone出来的所有流量.我的iPhone上安装了ssl证书/配置文件,我可以看到很多ssl加密的流量.然而,一些应用程序似乎没有完成ssl握手.错误是:“SSLHandshake:远程主机在握手期间关闭连接”,然后CharlesProxy建议将应用程序配置为信任查尔斯根证书.我以为当我将配置文件安装到我的iphone上时呢?

  5. ios – 获取SSL证书详细信息

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. ios – 如何让Charles在SSL连接上使用Xcode 7?

    我遇到了新安装的Xcode7的问题,即使在通过Charles在iOS模拟器上安装SSL证书(帮助>SSL代理>在iOS模拟器中安装CharlesRoot证书),并明确允许服务器的域我在查尔斯查询,任何试图收听SSL流量的尝试都会导致连接失败.Charles报告以下错误:SSLHandshake:RemotehostclosedconnectionduringhandshakeYoumayneedt

  7. 从iOS7迁移后,为什么iOS8 SSL请求会间歇性地失败?

    我的下一步是什么,找出这些请求失败的原因?

  8. iOS 10.3:模拟器HTTPS localhost:SSL错误

    这适用于iOS10.2及更低版本,但升级到10.3后,当模拟器尝试通过HTTPS连接到运行在localhost上的开发服务器时,Xcode控制台会输出以下错误:打印出URLSessionDataTask返回的错误显示:参考:Apple:Developer:GuidesandSampleCode:TechnicalNoteTN2232:HTTPSServerTrustEvaluation要创建自签名

  9. 我这个站长是怎么炼成的

    但我却厌倦了,这并不是我所想要的人生。但是当我真正身处其中时,这样的生活、这样的工作显得是那么的廉价,让我没有一丝珍惜的意愿。最后我注册了www.iswifting.com很快网站就被搭建起来了,这算是我踏入站长行列的第一步。前段时间,我再次启用了这个域名www.iswifting.com,做一个swift开发,以后还会在这里分享一些关于swift的优秀文章。他有一个个人博客网站做的不错,唐巧的技术博客,里面都是他自己写的iOS开发技术文章和一些琐事。

  10. android – 为什么Volley会回归到SSLV3?

    id=78187那么我的选择是什么?>我的假设是否正确,Volley会回归到SSLV3?换句话说,导致回退的原始失败是什么以及如何解决?>我最近下载了Volley,但我不确定它是最新的.我如何找到我的版本?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部