免费SSL证书 – Let’s Encrypt 与 certbot 延期



给网站加了SSL,用的 Let’s Encrypt 。后来看有效期只有90天,官网推荐用 certbot  延期,开始感觉挺麻烦,但看到一篇文章,写的很好,转贴留存一下!

文章出自:https://ksmx.me/letsencrypt-ssl-https/

现在用 Let’s EncryptStartSSL 的免费证书有效期是1年,1年后需要手动更换。配置过程还挺麻烦的。

更推荐 Let’s Encrypt,虽然有效期只有3个月,但可以用 certbot 自动续期,完全不受影响。而且 Let’s Encrypt 因为有了 certbot 这样的自动化工具,配置管理起来非常容易。

生成 Let’s Encrypt 证书

Let’s Encrypt 证书生成不需要手动进行,官方推荐 certbot 这套自动化工具来实现。3步轻松搞定:

  1. 下载安装 certbot (Let’s Encrypt项目的自动化工具)
  2. 创建配置文件
  3. 执行证书自动化生成命令

下面的教程运行在 Arch Linux 上,其他操作系统也大同小异。你可以在 certbot 网站上,选择你的 Web Server 和 操作系统,就能看到对应的安装和配置教程。

1. 下载安装 certbot

在 Arch Linux 上,安装很简单:

$ sudo pacman -Syu
$ sudo pacman -S certbot

2. 创建配置文件

先创建存放配置文件的文件夹:

$ sudo mkdir /etc/letsencrypt/configs

编辑配置文件:

$ sudo vim /etc/letsencrypt/configs/example.com.conf

把 example.com 替换成自己的域名,配置文件内容:

# 写你的域名和邮箱
domains = example.com
rsa-key-size = 2048
email = your-email@example.com
text = True

# 把下面的路径修改为 example.com 的目录位置
authenticator = webroot
webroot-path = /var/www/example

这里需要解释一下,上面配置文件用了 webroot 的验证方法,这种方法适用于已经有一个 Web Server 运行中的情况。certbot 会自动在 /var/www/example 下面创建一个隐藏文件 .well-known/acme-challenge ,通过请求这个文件来验证 example.com 确实属于你。外网服务器访问 http://www.example.com/.well-known/acme-challenge ,如果访问成功则验证OK。

我们不需要手动创建这个文件,certbot 会根据配置文件自动完成。

3. 执行证书自动化生成命令

一切就绪,我们现在可以运行 certbot 了。

$ sudo certbot -c /etc/letsencrypt/configs/example.com.conf certonly

## 片刻之后,看到下面内容就是成功了
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem.

如果运行顺利,所有服务器所需要的证书就已经生成好了。他们被放在了 /etc/letsencrypt/live/example.com/ 下:

$ ls /etc/letsencrypt/live/example.com/
cert.pem #server cert only
privkey.pem #private key
chain.pem #intermediates
fullchain.pem #server cert + intermediates

配置 Nginx 加入证书

到这里已经成功一大半了,只需要配置 Nginx 支持刚刚生成的证书。而且这个配置有最佳实践可以参考,访问:Mozilla SSL Configuration Generator,这是 Mozilla 搞得一个 HTTPS 配置文件自动生成器,支持 Apache,Nginx 等多种服务器。按照这个配置文件,选择 Intermediate 的兼容性。这里生成的配置文件是业界最佳实践和结果,让 Nginx 打开了各种增加安全性和性能的参数。

默认配置文件是这样的:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /path/to/signed_cert_plus_intermediates;
    ssl_certificate_key /path/to/private_key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
    ssl_dhparam /path/to/dhparam.pem;

    # intermediate configuration. tweak to your needs.
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

    resolver <IP DNS resolver>;

    ....
}

请根据自己的服务配置修改和添加内容,重点只需要关注6行

server {
	listen 443 ssl http2;
	....
	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_dhparam /etc/nginx/ssl/dhparam.pem;

	ssl_trusted_certificate /etc/letsencrypt/live/example.com/root_ca_cert_plus_intermediates;

	resolver <IP DNS resolver>;
	....
}

这6行中,部分文件还不存在,逐个说明。

首先是第一行 listen 443 ssl http2; 作用是启用 Nginx 的 ngx_http_v2_module 模块 支持 HTTP2,Nginx 版本需要高于 1.9.5,且编译时需要设置 --with-http_v2_module 。Arch Linux 的 Nginx 安装包中已经编译了这个模块,可以直接使用。如果你的 Linux 发行版本中的 Nginx 并不支持这个模块,可以自行 Google 如何加上。

ssl_certificate 和 ssl_certificate_key ,分别对应 fullchain.pem 和 privkey.pem,这2个文件是之前就生成好的证书和密钥。

ssl_dhparam 通过下面命令生成:

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

(可选)ssl_trusted_certificate 需要下载 Let’s Encrypt 的 Root Certificates,不过根据 Nginx 官方文档 所说,ssl_certificate 如果已经包含了 intermediates 就不再需要提供 ssl_trusted_certificate,这一步可以省略:

$ cd /etc/letsencrypt/live/example.com
$ sudo wget https://letsencrypt.org/certs/isrgrootx1.pem
$ sudo mv isrgrootx1.pem root.pem
$ sudo cat root.pem chain.pem > root_ca_cert_plus_intermediates

resolver 的作用是 “resolve names of upstream servers into addresses”, 在這個配置中,resolver 是用來解析 OCSP 服務器的域名的,建议填写你的 VPS 提供商的 DNS 服务器,例如我的 VPN 在 Linode,DNS服务器填写:

resolver 106.187.90.5 106.187.93.5;

Nginx 配置完成后,重启后,用浏览器测试是否一切正常。

$ sudo systemctl restart nginx

这时候你的站点应该默认强制使用了 HTTPS,并且浏览器地址栏左边会有绿色的小锁:

自动化定期更新证书

Let’s Encrypt 证书有效期是3个月,我们可以通过 certbot 来自动化续期。

在 Arch Linux 上,我们通过 systemd 来自动执行证书续期任务。

$ sudo vim /etc/systemd/system/letsencrypt.service
[Unit]
Description=Let's Encrypt renewal

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --agree-tos
ExecStartPost=/bin/systemctl reload nginx.service

然后增加一个 systemd timer 来触发这个服务:

$ sudo vim /etc/systemd/system/letsencrypt.timer
[Unit]
Description=Monthly renewal of Let's Encrypt's certificates

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

启用服务,开启 timer:

$ sudo systemctl enable letsencrypt.timer
$ sudo systemctl start letsencrypt.timer

上面两条命令执行完毕后,你可以通过 systemctl list-timers 列出所有 systemd 定时服务。当中可以找到 letsencrypt.timer 并看到运行时间是明天的凌晨12点。

在其他 Linux 发行版本中,可以使用 crontab 来设定定时任务,自行 Google 吧。

用专业在线工具测试你的服务器 SSL 安全性

Qualys SSL Labs 提供了全面的 SSL 安全性测试,填写你的网站域名,给自己的 HTTPS 配置打个分。

如果你完全按照我上面教程配置,遵循了最佳实践,你应该和我一样得分是 A+



SuperHidden.vbs , 右键 添加\卸载 “显示\隐藏 系统文件”

一段VB脚本,将“显示隐藏系统文件”加入到右键,如图。

20140725101903

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.RegWrite "HKCR\CLSID\{00000000-0000-0000-0000-000000000012}\Instance\InitPropertyBag\CLSID", "{13709620-C279-11CE-A49E-444553540000}", "REG_SZ"
WSHShell.RegWrite "HKCR\CLSID\{00000000-0000-0000-0000-000000000012}\Instance\InitPropertyBag\method", "ShellExecute", "REG_SZ"
if WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt") = 0 then
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "0", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "2", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt", "1", "REG_DWORD"
WSHShell.RegWrite "HKCR\CLSID\{00000000-0000-0000-0000-000000000012}\Instance\InitPropertyBag\command", "显示扩展名及文件", "REG_SZ"
WSHShell.SendKeys "{F5}+{F10}e"
else
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt", "0", "REG_DWORD"
WSHShell.RegWrite "HKCR\CLSID\{00000000-0000-0000-0000-000000000012}\Instance\InitPropertyBag\command", "隐藏扩展名及文件", "REG_SZ"
WSHShell.SendKeys "{F5}+{F10}e"
end if
Set WSHShell = Nothing
WScript.Quit(0)

 

 

email2ascii — 将EMail地址转换为Ascii

今天看到一个很好的隐藏页面邮件地址的例子:

通过将电子邮件地址转码为Ascii编码,在页面完成一种简单的电子邮件地址保护,减少你收到垃圾邮件的概率。

 

HTML:
<a href="mailto:&#100;&#105;&#115;&#116;&#114;&#111;&#64;&#100;&#105;&#115;&#116;&#114;&#111;&#119;&#97;&#116;&#99;&#104;&#46;&#99;&#111;&#109;">Ladislav Bodnar</a>

鼠标移动到连接, 页面状态栏显示的是:

mailto:distro@distrowatch.com

 

完整代码,请查看:  EMail 地址转 Ascii — 将EMail地址转换为Ascii

http://as32.net/t/email2ascii.php

 

PHP:

<?php
	$result=array();
	for($i=0,$l=mb_strlen($email,'utf-8');$i<$l;++$i){
			$result[]="&amp;#".uniord(mb_substr($email,$i,1,'utf-8'));
	}
	echo "<pre>".join(";",$result).";</pre>";
?>

JavaScript:

<script type="text/javascript">
	var s = "<?php echo $email;?>";
	var as = "";
	for(var a = 0; a<s.length; a++){
			 as += "&amp;#"+s.charCodeAt(a)+";";
	 }
	document.write("<pre>"+as+"</pre>");
</script>

 

完整PHP代码:

email2ascii.txt — 右键另存下载

 

Linux下查询端口占用的进程pid

 

今天在CentOS下安装学习Jexus, 装好启动失败.  发现80端口占用了,才想起已经安装了amh.

于是按照windows下”netstat -a”, 查看网络端口连接.  但是显示的列表十分长, 不好查找…

加参数 , 发现几个容易查看的参数命令.
1. 不过滤显示

netstat -lnp

2.过滤. 最方便的,只显示80

netstat -lnp | grep "80"

3.使用 lsof 查询. 没有的话先安装

#yum install lsof #[安装lsof]
lsof -i:80

知道占用端口的进程后修改,可以终止进程:kill pid. 或者修改启动端口.

 

 

常见ADSL猫的默认管理员用户名及其密码

常见ADSL猫的默认管理员用户名及其密码:
[收集于网络 如有错误请指正!]

ViKing
用户名:adsl 密码:adsl1234

实达
默认IP:192.168.10.1
版本:2110ehr v3.20、 2110ehr v3.21、 2110ehr v3.51
用户名:admin 密码:conexant

实达 2110ehr v4.5
用户名:root 密码:grouter

实达 2110eh v3.51(中文web界面)
用户名:admin 密码:starnetadsl

艾玛
默认IP:192.168.101.1
用户名:admin 密码:admin

华硕
::URL::http://192.168.1.1/
用户名:adsl 密码:adsl1234

神州数码 DCAD-6010RA V6
::URL::http://192.168.1.1/
用户名为ADSL,密码为ADSL1234

神州数码 DCAD-6010RA V5
192.168.1.1
admin admin1234

全向 QL1680
在IE浏览器的地址栏里面敲入IP地址10.0.0.2
的用户名是admin出厂时默认值:密码是qxcomm1680,管理员密码是 qxcommsupport

全向 QL1688
在IE浏览器的地址栏里面敲入IP地址10.0.0.2
用户名为admin;出厂时默认值:密码为qxcomm1688

全向 QL1880
在IE浏览器的地址栏里面敲入IP地址192.168.1.1
用户名是root出厂时默认值:密码是root

全向 qxcomm1688
::URL::http://192.168.1.1/
用户名为admin 高端设置密码是:qxcommsuport

全向 qxcomm1680
::URL::http://192.168.1.1/
登陆ADSL的密码是:qxcomm1680

普天 ISIN6161-RT
用户名:putian 密码:123456

普天 ISIN6161-BE
用户名:putian 密码:123456

重庆普天CP ADSL03
::URL::http://192.168.1.1/
username:root
password:root

etek-td ADSL_T07L006.0
::URL::http://192.168.1.1/
User Name: supervisor
Password: 12345
忘记密码的解决办法:
使用超级终端的Xmodem方式重写Vxworks.dlf,密码恢复成:12345

合勤 zyxel 642
在运行输入telnet 192.168.1.1
密码1234,一直按住机身后面的的RESET复位键然后开机,保持几十秒就可以恢复出厂默认 值

北电
用户名:anonymous 密码:12345

大恒
用户名:admin 密码:admin

大唐
用户名:admin 密码:1234

斯威特
用户名:root 密码:root
用户名:user 密码:user

中兴

ZXDSL831
用户名:ZXDSL/adsl
密码:zxdsl/adsl831

ZXDSL831B
用户名:ZXDSL/adsl
密码:zxdsl/adsl831

BENQ
用户名:user 密码:benq1234

伊泰克
::URL::http://192.168.1.1/
用户名:supervisor
密码:12345

阿尔卡特
::URL::http://192.168.1.1/
一般没有密码

义成(同维) DSL699E 699EA
::URL::http://192.168.1.1/
用户名:ROOT
密码:ROOT

大亚 DB102 DB108
::URL::http://192.168.1.1/
用户名:admin
密码:dare
高级设置界面:::URL::http://192.168.1.1/ doc/index1.htm

WST RT1080
::URL::http://192.168.0.1/
username:root
password:root

WST ART18CX
::URL::http://10.0.0.2/
username:admin
password:conexant
username:user
password :password

泛德
admin
conexant

东信 Ea700
::URL::http://192.168.1.1/
用户名:空
密码:password

broadmax hsa300a
::URL::http://192.168.0.1/
username:broadmax
password:broadmax

长虹 ch-500E
::URL::http://192.168.1.1/
username:root
password:root

台湾突破 EA110
RS232:38400
::URL::http://192.168.7.1/
username SL
psw SL

GVC DSL-802E/R3A
::URL::http://10.0.0.2/
username:admin
password:epicrouter
username:user
password assword

科迈易通 km300A-1
::URL::http://192.168.1.1/
username: password,command
passwordassword

科迈易通 km300A-G
::URL::http://192.168.1.1/
username:root
password:root

科迈易通 km300A-A
::URL::http://192.168.1.1/
username:root/admin (armandb,PINKLACE,command
password:123456/root

科迈易通 KM300A-AB
192.168.1.1
admin/root
root/123456

sunrise SR-DSL-AE
::URL::http://192.168.1.1/
username:admin
password:0000

sunrise DSL-802E_R3A
::URL::http://10.0.0.2/
username:admin
password:epicrouter
username:user
password assword

UT斯达康 ut-300R
::URL::http://192.168.1.1/
username:root or admin
password:utstar

CyberLink 6307/6309KG
它使用在随Cyberlink6307/6309KG带的光盘中DSLCom.exe
出厂时默认值:路由IP地址 : 192.168.1.1密码 : stm

TP-LINK TD-8800
192.168.1.1
户名admin,密码admin

Ecom ED-802EG
在IE输入192.168.1.1
用户名和密码都为root

神州数码 6010RA
在IE输入192.168.1.1
用户名为ADSL,密码为ADSL1234

华为Huawei SmartAX MT800
初始IP是192.168.1.1
用户名ADMIN 密码admin/epicrouter
恢复默认配置的方法有两种,一种是连续按MODEM背后的RESET键三 次
另一种是在配置菜单的SAVE&REBOOT里选择恢复默认配置。

湖北邮通
IP:10.0.0.2
Username:admin
Password:epicrouter

亨威NSM500网速通
IP:192.168.1.1
Username:root
Password:root

SpeedTouch]
root
root

中达电通 CT500-B
root
12345

中达电通 CT500-R
root
12345

天邑 HASB-100
admin
admin/epicrouter

星网锐捷 ADSL2110EH
192.168.10.1
root/admin

ADSL2110EH
192.168.10.1
root/admin

银河信息 AAM6000EV(华硕)
192.168.1.1
adsl adsl1234

港湾网络 HA1000-TR
192.168.1.1
admin harbour

格林耐特 GRT1500R GS8120/GS3780
192.168.1.1
root 12345

格林耐特 GRT1500 AD6485/AD6488
192.168.1.1
root 12345

友讯电子有限公司 DSL-500 DSL-200 DSL-300
192.168.1.1
admin admin

斯维特新 SLA8000D SLA8000 SVT508
192.168.1.1
root root

探索者 KD318
10.0.0.2
admin conexant

全创 AccessLinker 1100
10.0.0.2
admin epicrouter

世博资讯 2610 Conexant
10.0.0.2
admin password

金瑞迪 RA-800 Router
192.168.1.1
root 12345

金瑞迪 RA-800 Modem
192.168.1.1
root 12345