首页
碎碎念
东邻西舍
本站信息
前来吐槽
Search
1
openwrt系统上安装第三方插件
11,243 阅读
2
ubuntu下zerotier的基本使用教程
6,125 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
2,513 阅读
4
为padavan安装SSL证书
1,389 阅读
5
openwrt无线中继功能:实现不插网线就能上网
1,378 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
踩坑实录
Ubuntu
Java
MySQL
CSS
折腾搞机
HTML
SQL
MyBatis
Nginx
只言片语
树莓派
OpenWrt
路由器
SSL
Maven
Git
随笔
知识分子没文化
累计撰写
78
篇文章
累计收到
63
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
搜索到
3
篇与
SSL
的结果
2021-02-07
免费的泛域名证书——Let's encrypt证书
[Meting] [Music server="netease" id="276063" type="song"/] [/Meting] 目录: 安装之前 1.安装acme.sh脚本 2.获取域名服务商的DNS api 3.生成证书 4.续签证书 5.问题及注意事项 5.1.安装脚本时提示加载 api 脚本失败 5.2.添加 TXT 解析记录失败 5.3.申请证书时卡在验证步骤 5.4.注意事项 环境说明: Linux:ubuntu 20.0.4 nginx:1.18 域名服务商:阿里云 安装之前 关于如何给 Nginx 服务器安装 SSL 证书,在之前的博客 为Nginx服务器安装SSL证书实现站点的HTTPS访问 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 这一篇中写过,里面详细介绍了申请到安装的一系列流程,只不过,上一篇是以申请阿里云的免费单域名证书为例来介绍SSL证书的安装,而本篇则主要来详细介绍一下泛域名证书(也叫通配符证书)的申请。 如果你不明白单域名证书与泛域名证书的区别,那么可以看看这篇:通配符ssl证书与单域名、多域名版的区别,通配符证书有哪些品牌呢?。 简单来说,单域名证书只适用于单个三级域名,而泛域名证书适用于二级域名以及二级域名下所有带前缀的的三级域名。 阿里云、腾讯云等平台的单域名证书很容易就能免费申请到,但是泛域名证书普遍都是收费的。对于个人来说,如果需要使用泛域名证书,也有免费的渠道可以申请到,那就是 Let's encrypt 签发的泛域名证书。 可以用来申请 Let's encrypt 证书的工具太多了,官网文档上列出来的就有几十种,本篇博客使用 acme.sh 脚本来申请 Let's encrypt 证书。 1.安装acme.sh脚本 这是其 Github 项目链接:https://github.com/acmesh-official/acme.sh 官方说明文档:安装脚本-英文说明、中文说明 官方文档中安装脚本有这么几种方法: 从https://get.acme.sh上安装: curl https://get.acme.sh | sh 或者: wget -O - https://get.acme.sh | sh 从github安装: curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh 从github上克隆整个项目: # 这一步要用到git,安装过的可以忽略,没有安装的用以下命令安装git: sudo apt install git # 克隆项目目录 git clone https://github.com/acmesh-official/acme.sh.git # 进入克隆完成的目录 cd acme.sh # 给脚本文件执行权限 chmod a+x acme.sh # 运行脚本文件,这个邮箱用来接收证书续订的通知,不可省略 ./acme.sh --install --accountemail [邮箱] 1.执行脚本时,如果碰到报错: /usr/bin/env: ‘sh\r’: No such file or directory 可尝试这个方法:Linux系统下运行bash脚本提示/usr/bin/env: ‘bash\r’: No such file or directory - Cqlismy - 博客园 (cnblogs.com) 2.关于安装时acme.sh的一些高级选项及其用法: --home:自定义安装 acme.sh 的目录. 默认情况下安装在 ~/.acme.sh。 --config-home:设置一个目录来保存证书、密钥、配置等文件,默认情况下,保存在 --home。 --cert-home:保存证书的目录,默认情况下,保存在 --config-home。 --accountemail:用来注册 Let's Encrypt 账户的邮箱,通过这个邮箱来接收证书续订通知的邮件。 --accountkey:保存帐户私钥的文件,默认情况下,保存在 --config-home。 --user-agent:访问 Let's Encrypt 服务器时的浏览器标识。 3.脚本在安装的过程中,做了3件事: 复制 acme.sh 到 HOME 目录($HOME):~/.acme.sh/ 之后所有生成的证书也会放在这里 创建别名:acme.sh=~/.acme.sh/acme.sh 创建 cron 每日任务去检查是否有证书需要更新 如: 0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null 我在安装的时候,前两种方法都不成功,只有第三种方法管用。所以根据自身情况选择一种方法安装即可,但是用第三种方法的时候要记得克隆完项目之后执行脚本。 如果安装完成之后,使用 acme.sh 命令时提示找不到命令,则需要重新加载一下环境变量: source ~/.bashrc 接下来,我们需要来验证我们对这个域名的所有权,因为很容易就能想到,SSL 证书签发机构肯定不能随意签发证书。 通常的验证方式有两种: 文件验证:需要在网站根目录下放置一个文件,来验证域名所有权 DNS验证:给域名添加一条 TXT 解析记录,也可以用来验证域名所有权 建议使用 DNS 验证,这种方式的好处是,不需要任何服务器,不需要任何公网 IP,只需要 DNS 的解析记录即可,并且如果有域名服务商的DNS api ,甚至都不需要我们手动添加 TXT 解析记录,脚本会自动完成添加解析记录的过程,验证完成之后还会聪明地删掉解析记录。 2.获取域名服务商的DNS api 因为博主只有阿里云域名,没有其他服务商那里的域名,这里以阿里云为例来说明如何获取 api。 进入 阿里云AccessKey管理界面 并登录,点击左上角创建 AccessKey,就会弹出一个页面,上面是创建出来的 AccessKey,将其复制下来。 关于 api 的使用方法,官方文档 How to use DNS API 说明的很详细,可以自己查阅,根据自己的域名商选择对应的就行。阿里云对应的是文档中第 11 个,那么按照文档中的方法,在命令行中输入: # 设置环境变量,对应的等号后面换成自己的key和secret,双引号别丢了 export Ali_Key="key" export Ali_Secret="secret" 3.生成证书 下面这一步就很简单了,根据官网文档 dnsapi · acmesh-official/acme.sh Wiki (github.com),一句命令就能签发证书: acme.sh --issue --dns dns_ali -d *.langp.wang -d langp.wang 上面这句命令适用于阿里云平台的域名,其中的 langp.wang 改为需要签发证书的域名即可,后面的 -d *.langp.wang 参数表示生成适用于所有三级域名的泛域名证书,当然也可以改成 -d langp.wang 来生成单域名证书,或者两个参数都加上也可以。 证书如果签发成功,会有“success”字样提示,末尾处会输出生成的证书文件的位置与名称: 根据官方文档,对应的秘钥文件是xxx.key,证书文件是fullchain.cer,接下来就可以安装证书了。Nginx 服务器安装 SSL 证书的方法可以参考我的另一篇博客:为Nginx服务器安装SSL证书实现站点的HTTPS访问 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com)。 4.续签证书 签发好的泛域名证书是三个月的期限,过期了需要重新签发,才能继续使用: acme.sh --renew acme.sh --renew -d *.langp.wang -d langp.wang --force 同样的,将命令中的 langp.wang 改为续签证书的域名即可。 5.问题及注意事项 5.1.安装脚本时提示加载 api 脚本失败 脚本文件在上传到服务器之前在 windows 本地被打开过了,其格式被改变,在 Linux 系统中执行时便出现报错。 可尝试这个方法:Linux系统下运行bash脚本提示/usr/bin/env: ‘bash\r’: No such file or directory - Cqlismy - 博客园 (cnblogs.com),或者重新下载一次脚本文件。 5.2.添加 TXT 解析记录失败 大概率是 DNS api 的问题。可尝试换一个 api,然后修改 .acme 文件夹下的 acme.conf 文件中的 api。 5.3.申请证书时卡在验证步骤 解决办法: 申请之前执行这条命令: export ACME_USER_WGET=1 上个办法如果无效,那么可能是由于申请失败的次数太频繁,被加入了黑名单,等待一两天之后再申请 5.4.注意事项 Nginx 的配置 ssl_certificate 使用生成的 fullchain.cer ,而非 <domain>.cer ,否则会报 Chain issues Incomplete 错误 证书续签时,直接在原来的脚本文件目录上执行签发命令,可以不用执行设置 api 的命令。前提是 api 依然有效 更新完本地证书之后,需要重载 Nginx 配置文件: nginx -s reload # 或者 nginx -s force-reload 服务器的证书更新之后,CDN 服务也需要更新证书
2021年02月07日
841 阅读
0 评论
0 点赞
2021-01-30
为padavan安装SSL证书
[Meting] [Music server="netease" id="66159" type="song"/] [/Meting] 目录: 前言 1. padavan生成证书 2. 使用第三方证书 padavan设置HTTPS访问有两种方法: 环境说明: 设备:小米路由器 R3G 系统:padavan 前言 padavan设置HTTPS访问有两种方法: padavan可以生成一个证书,只不过是未经认证的证书 从域名服务商申请第三方机构的证书,比如阿里云、腾讯云等 下面来详细介绍这两种方法: 1. padavan生成证书 进入padavan的管理界面: 选择左侧高级设置->系统管理,选择页面第二个选项卡: 此时HTTP Web服务一栏中的Web服务器协议显示为HTTP,将其更改为HTTP&HTTPS,下方就会出现Web服务器HTTPS证书一栏: 点击右边生成,弹出提示: 点击确定,就会生成证书,一两秒之后原来”生成“按钮处会闪现”Success!“字样,此时即可下拉到页面底端,应用页面设置。 再选择高级设置->防火墙,在通用设置那一页上找到如图两项: 其中第一项表示的是用HTTP方式从外网访问路由器用的端口,第二项则是用HTTPS方式,看个人意愿选择开哪个,我这里为了方便就全都开了。这里值得注意的是,第一个端口不能设置为8080或80,第二个端口不能设置为443,否则就会出现只能在内网访问,在外网却无法访问的情况(盲猜是电信运营商屏蔽了这几个端口?)。 设置完成后,此时还是HTTP方式访问的,再回来把Web 服务器协议改成HTTPS,再次点击应用,就切换成了HTTPS方式访问了,因为切换到了HTTPS方式访问,所以原来的页面会显示无法访问: 在原来的网址前加入”https://“,即可使用HTTPS访问路由器管理界面了,这时也就完成了SSL证书的部署。 但是使用padavan自己生成的证书时,问题也很明显,那就是访问会提示访问页面不安全: 为什么呢?因为一般SSL证书都是由第三方权威机构来颁发,这样的证书是各大浏览器厂商都承认的,而padavan自己生成的证书显然不被各大浏览器厂商承认,那么浏览器就会显示这样的警告信息。所以这里更推荐用下面一种方法,部署第三方机构的证书。 2. 使用第三方证书 一般对于个人用户来说,第三方机构颁发的免费DV证书即可满足要求,比如阿里云腾讯云都可以申请到为期一年的免费单域名证书(前提是在平台上买了域名),支持续签。这里以阿里云的免费SSL证书为例说明怎样在padavan上部署第三方SSL证书。 首先登陆阿里云,前往阿里云SSL证书购买页面,按如图设置,使最后的价格为0: 点击购买,购买完成之后,自动跳转到SSL证书控制台,然后就可以为所购买的域名申请SSL证书了,申请过程省略,过程也很简单,照着提示做就可以,申请之后会提交审核,审核速度也很快,一般5分钟左右最长不超过10分钟就能审核成功。 完毕后,即可在SSL证书控制台下载SSL证书: 选择"其他",下载即可: 下载完成之后解压出的文件夹有两个文件: 跟前面一样,选择高级设置->防火墙,在通用设置那一页上找到如图两项: 其中第一项表示的是用HTTP方式从外网访问路由器用的端口,第二项则是用HTTPS方式,看个人意愿选择开哪个,我这里为了方便就全都开了。这里值得注意的是,第一个端口不能设置为8080或80,第二个端口不能设置为443,否则就会出现只能在内网访问,在外网却无法访问的情况(个人猜测是电信运营商屏蔽了80和443这几个端口)。 再回到padavan系统界面,找到Web 服务器 HTTPS 证书一栏中的 Server Certificate (required)与Server Private Key (required)两项,各点击一下打开就可以打开输入框: 将下载下来的两个文件分别用记事本打开,粘贴.pem文件中的内容到Server Certificate (required)(即第三项)的输入框中,粘贴.key文件中的内容到Server Private Key (required)(即第四项)的输入框中,对应顺序不能弄错,粘贴完成之后应用设置。同时浏览器会提示找不到页面,在原链接之前加入https://即可访问到: 链接之前变成了一把小锁,说明SSL证书部署成功。
2021年01月30日
1,389 阅读
0 评论
1 点赞
2021-01-26
为Nginx服务器安装SSL证书实现站点的HTTPS访问
[Meting] [Music server="netease" id="28798772" type="song"/] [/Meting] 目录: 1. 查看nginx是否支持SSL 2. 申请并下载SSL证书 3. 上传证书 4. 安装证书 5. 设置HTTPS强转 环境说明: Linux:ubuntu 20.0.4 nginx:1.18 首先,你得有域名的证书文件,如果还没有,就得要申请了,如果要求不高只要单域名证书的话,到购买域名的服务商那里就能免费申请到,本文以阿里云的单域名证书为例来进行说明。 1. 查看nginx是否支持SSL 使用命令查看nginx版本: nginx -V 查看输出结果,如果有显示--with-http_ssl_module,则说明支持安装SSL证书,如果没有显示,则需要重新下载nginx源码重新编译安装SSL模块。 2. 申请并下载SSL证书 一般对于个人用户来说,第三方机构颁发的免费DV证书即可满足要求,比如阿里云腾讯云都可以申请到为期一年的免费SSL证书(前提是在平台上买了域名)。要是对于信息安全有更高要求的用户或者企业来说,就得使用付费的SSL证书了。这里以阿里云的免费SSL证书为例说明: 首先登陆阿里云,前往阿里云SSL证书购买页面,按如图设置,使最后的价格为0: 点击购买,购买完成之后,自动跳转到SSL证书控制台,然后就可以为所购买的域名申请SSL证书了,申请过程很简单,照着提示做就可以,申请之后会提交审核,审核速度也很快,一般5分钟左右最长不超过10分钟就能审核成功。 完毕后,即可在SSL证书控制台下载SSL证书: 选择nginx,下载即可,记住下载的位置,等会上传时要用 3. 上传证书 先在服务器上创建一个放SSL证书的目录,这里以/etc/nginx/ssl为例,当然你也可以改成其他目录: # 创建目录 sudo mkdir /etc/nignx/ssl 然后将下载好的证书文件使用Ftp工具上传到这个文件夹,这里推荐用XSHELL,FileZilla等FTP工具,上传之后如图: 4. 安装证书 编辑网站的Nginx配置文件,我的目录是/etc/nginx/sites-enabled,这里根据自己的实际情况来换成自己的目录: sudo nano /etc/nginx/nginx.conf 在配置文件中定位到站点的配置信息,在其中添加以下server配置信息,并按照注释修改其中部分站点信息: #以下属性中,以ssl开头的属性表示与证书配置有关。 server { listen 80; #配置HTTPS的默认访问端口为443,如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 listen 443 ssl; #如果您使用Nginx 1.14.0及以下版本,请使用listen 443和ssl on代替listen 443 ssl。 #需要将yourdomain.com替换成证书绑定的域名。 server_name yourdomain.com; root html; #站点目录更改成自己的 index index.html index.htm; #需要将cert-file-name.pem替换成已上传的证书文件的名称。 ssl_certificate /etc/nginx/ssl/cert-file-name.pem; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。 ssl_certificate_key /etc/nginx/ssl/cert-file-name.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DHE; #表示使用的TLS协议的类型。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; #其他的配置信息··· } 更改完成后,ctrl + o保存,ctrl + x退出,回到终端界面,然后重启Nginx服务: sudo nginx -s reload 重启完成后,验证安装是否成功,在访问网址前方加入:https://,回车访问: 原来地址栏前面的“不安全”字样变为了一把绿色的小锁,说明SSL证书安装成功 5. 设置HTTPS强转 经过上面的设置后,网站虽然可以用HTTPS访问,但是每次都得网址前面手动添加HTTPS://字样,否则就是默认HTTP方式访问,那么我们可以设置一下,使网站在用HTTP方式访问时都能自动跳转到更安全的HTTPS方式。 下面提供了三种方式来实现,任选一种在配置文件中添加相应代码即可,添加完别忘了重启nginx服务。 # 1.利用497状态码跳转,在一个站点只允许 https 访问时, 如果使用 http 访问会报出497错误码,所以可以利用497状态码重定向到 https: error_page 497 https://$host$uri?$args; # 2. if ($server_port = 80){ return 301 https://$host$request_uri; } # 3. if ($scheme = http) { return 301 https://$host$request_uri; } 此篇博客仅限单域名证书的申请安装,但是泛域名证书的话在域名服务商那里就是付费的,当然也有免费的,比如大名鼎鼎的Let's encrypt证书,参考这里:免费的泛域名证书——Let's encrypt证书 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com)。
2021年01月26日
680 阅读
0 评论
0 点赞