标签 证书 下的文章

Nginx设置严格域名校验

配置 HTTP/HTTPS 网站时,Nginx 默认不严格校验 Host/SNI 字段。也就是说,假如我们只配置了 server_name 2dan.cc www.2dan.cc,但用户使用 IP 地址访问,仍然会访问到这个网站(server);另外使用 https://IP 访问,再查看SSL证书,会泄露IP上绑定的域名。

解决:

一、配置默认 server

要解决问题很简单,我们用 default_server 设置默认服务器就行了。对于 HTTP 协议,可以这么写:

server {
    listen 80 default_server;
    return 444;
}

其中 444 是 Nginx 自定义的、非 HTTP 标准的状态码,表示关闭连接;写成 403 之类也没问题。server_name 省略不写。

HTTPS 类似,但需要 SSL 证书。可以用现成的证书,但其中会有域名等信息。如果介意,自签名一张就好。

要自签名证书,我们先生成私钥(任选其一):

openssl genrsa -out /opt/self-signed.key 2048 # 2048 位 RSA
openssl ecparam -name secp384r1 -genkey -out /opt/self-signed.key # 384 位 ECC

然后根据私钥生成证书:

openssl req -new -x509 -days 3650 -key /opt/self-signed.key -out /opt/self-signed.crt -subj "/C=CN/ST=NULL/L=NULL/O=NULL/OU=NULL/CN=Please-enable-SNI"

其中 3650 是有效期天数,这里是 10 年。Please-enable-SNI 就是通用名称(Common Name),一般这里就是主域名,但我们自签名可以随便写,反正不受信任,也不需要被浏览器信任。

- 阅读剩余部分 -

Cloudflare使用api自由切换SSL证书颁发机构

介绍

Cloudflare目前Free计划提供四种证书
DigiCert CF默认签发的证书,兼容性更广,证书链也更短,只有一级中间证书,证书为期一年
Let’s Encrypt 证书为其三个月更换,有被墙的黑历史,慎用
Google Trust Services 其三个月更换
Sectigo 这个仅作为备份,不能主动启用,在控制台使用应该是随机分配的,没办法指定。

切换方法

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/你的域名区域ID/ssl/universal/settings" \
     -H "X-Auth-Email: 你的CF邮箱" \
     -H "X-Auth-Key: 你的APIKEY" \
     -H "Content-Type: application/json" \
     --data '{"enabled":true,"certificate_authority":"digicert"}'

- 阅读剩余部分 -

Comodo PositiveSSL证书购买及配置

购买网站:https://www.gogetssl.com

1、证书的购买
注册帐号并登陆后,点击顶部的 New Order 按扭打开证书购买页面
1.png
然后找到我们要购买的证书
2.png
点击后面的 Order

选好要购买的年数后点击下一步,选择合适的付款工具支付完成。
3.png

2、证书生成
点击左侧导航菜单 Online Tools -- Online CSR Generator
4.png
在右侧填好相关信息,点击 Generate CSR 生成,接着就可以看到CSR和Key的内容了。尤其是Key一定要保存好。
如果上面选中了发送到邮箱。还会收到emal,邮件的内容就是你刚刚在线生成的CSR和Key。

- 阅读剩余部分 -

免费SSL安全证书Let's Encrypt(certbot)安装使用教程

Let's Encrypt是很火的一个免费SSL证书发行项目,自动化发行证书,证书有90天的有效期。适合个人使用或者临时使用,不用再忍受自签发证书不受浏览器信赖的提示。去年二蛋曾经记录过Let's Encrypt的使用教程,但是Let's Encrypt已经发布了新的工具certbot,虽然是新工具,但是生成证书的使用方法和参数是基本一致的,证书续期更简单了。但是目前看certbot在一些老版本的Linux发行版上的兼容性还是有问题的,特别是在CentOS 5上,因为python版本过低是无法使用的,CentOS 6上需要先安装epel才行。

安装方法:

如果是CentOS 6、7,先执行:

yum install epel-release
cd /root
wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n

./certbot-auto -n只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改为国内的pip源。

单域名生成证书:

./certbot-auto certonly --email [email protected] --agree-tos --webroot -w /home/wwwroot/www.2dan.cc -d www.2dan.cc

多域名单目录生成单证书:(一个网站多个域名使用同一个证书)

./certbot-auto certonly --email [email protected] --agree-tos --webroot -w /home/wwwroot/www.2dan.cc -d www.2dan.cc -d 2dan.cc

多域名多目录生成多个证书:(一次生成多个域名的多个证书)

./certbot-auto certonly --email [email protected] --agree-tos --webroot -w /home/wwwroot/www.2dan.cc -d www.2dan.cc -d 2dan.cc -w /home/wwwroot/www.caibaoz.com -d www.caibaoz.com -d caibaoz.com

- 阅读剩余部分 -

免费SSL安全证书Let's Encrypt安装使用及Nginx配置

letsencrypt.png
Let's Encrypt CA 项目由非赢利组织 Internet Security Research Group (ISRG) 运营,由Mozilla、思科、Akamai、IdenTrust、EFF 和密歇根大学等组织发起,向网站自动签发和管理免费SSL证书,以加速互联网从 HTTP 向 HTTPS 过渡。

Let's Encrypt 官方网站:https://letsencrypt.org/
Let's Encrypt 项目主页:https://github.com/letsencrypt/letsencrypt

1、安装Let's Encrypt脚本依赖环境

# 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
yum install python-argparse

# CentOS 7
yum install -y git python27
yum install -y augeas-libs dialog gcc libffi-devel openssl-devel python-devel
yum install python-argparse

2、获取Let's Encrypt并生成SSL证书

yum install git-core
git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt
./letsencrypt-auto certonly --email [email protected] -d www.2dan.cc --webroot -w /home/html --agree-tos

如果多个域名可以加多个-d 域名

- 阅读剩余部分 -