https证书配置当前可以说需求量在一直增加,小程序的发布要求业务域名必需是https,有些浏览器对不配置https证书的站点会提示不安全!
而商用的https证书又收费较贵,对于项目前期需要https配置的话可以考虑使用Caddy或者是OpenResty集成Let's Encrypt 的免费证书!
Let's Encrypt是一个免费、自动化的证书签发机构,与商业证书签发机构相比,有以下几个主要的区别:
成本
商业证书签发机构(如Symantec、Comodo、DigiCert等)收费签发SSL/TLS证书,签发周期为一年或多年,定价通常从几十美元到数百美元不等。而 Let's Encrypt 则是一个公共的、非营利性证书签发机构,它提供的 SSL/TLS 证书完全免费,可以无限制地签发,签发周期为三个月。
自动化
商业证书签发机构通常需要手动验证证书申请人的身份和所有权,并且需要在每个证书到期之前手动更新它。相比之下,Let's Encrypt 的证书申请、验证和更新是自动化的,无需人工干预,而且证书签发速度非常快,通常只需要几分钟的时间。
安全性
商业证书签发机构通常会提供各种类型的 SSL/TLS 证书,从域名验证到高度验证的全名单证书等多种级别。相比之下, Let's Encrypt 只提供基本的域名验证 SSL/TLS 证书,对于需要更高级别验证的网站,商业证书签发机构可以提供更加严格的证书。
Caddy(Caddy是一款用Go语言编写的现代化Web服务器软件)配置HTTPS
- 在Caddy中,HTTPS被视为标准特性,可以通过简单的声明性语法来启用。
- Caddy使用名为Caddyfile的单个文件来配置整个服务器,其中包含所有的网站信息和证书信息。
- Caddy具有可扩展的模块化架构,可以轻松地添加许多功能,从而实现最小代码编写的灵活性和易用性。
example.com {
proxy / http://localhost:8080 {
transparent
}
}
Caddy中默认就开启了https,如果站点不使用https需要在配置文件中域名后面添加 example.com:80
OpenResty配置HTTPS
OpenResty是一个高性能的Web应用服务器,它与Nginx相似,但是提供了更多的功能。OpenResty可以使用Lua脚本语言编写扩展。
使用 lua-resty-acme完成ssl的配置:
opm install fffonion/lua-resty-acme
# create account key
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out /etc/openresty/account.key
# create fallback cert and key
openssl req -newkey rsa:2048 -nodes -keyout /etc/openresty/default.key -x509 -days 365 -out /etc/openresty/default.pem
修改配置文件
events {}
http {
resolver 8.8.8.8 ipv6=off;
lua_shared_dict acme 16m;
# required to verify Let's Encrypt API
lua_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
lua_ssl_verify_depth 2;
init_by_lua_block {
require("resty.acme.autossl").init({
-- setting the following to true
-- implies that you read and accepted https://letsencrypt.org/repository/
tos_accepted = true,
-- uncomment following for first time setup
-- staging = true,
-- uncomment following to enable RSA + ECC double cert
-- domain_key_types = { 'rsa', 'ecc' },
-- uncomment following to enable tls-alpn-01 challenge
-- enabled_challenge_handlers = { 'http-01', 'tls-alpn-01' },
account_key_path = "/etc/openresty/account.key",
account_email = "youemail@youdomain.com",
domain_whitelist = { "example.com" },
})
}
init_worker_by_lua_block {
require("resty.acme.autossl").init_worker()
}
server {
listen 80;
listen 443 ssl;
server_name example.com;
# fallback certs, make sure to create them before hand
ssl_certificate /etc/openresty/default.pem;
ssl_certificate_key /etc/openresty/default.key;
ssl_certificate_by_lua_block {
require("resty.acme.autossl").ssl_certificate()
}
location /.well-known {
content_by_lua_block {
require("resty.acme.autossl").serve_http_challenge()
}
}
}
}
更详细的配置可以参考:https://github.com/fffonion/lua-resty-acme
OpenResty上启用HTTPS,需要在Nginx配置文件中手动添加证书路径和密钥路径,然后重新加载配置文件。OpenResty可以使用Lua脚本来扩展功能,比如实现自动更新证书等。
Caddy的易用性和自动化明显高于OpenResty,不过集成了lua后的OpenResty在自定义和扩展性上优于Caddy!
选择免费证书或商用证书,需要考虑以下几个因素:
风险和安全性
商用证书一般提供更严格的身份验证(EV证书、OV证书等),有更高的保障和口碑,适合需要高度安全和可靠性的大型企业和金融应用场景。但是免费证书只提供域名验证,安全性和可靠性不一定如商用证书那样高。
经济成本
商用证书的单价通常从几十美元到几百美元不等,需要承担一定的费用。而免费证书无需支付证书费用。
用户规模
对于大型网站和企业,商用证书的成本也可能会降低。如果可以从签发商那里购买大量证书,则可获得大量折扣,对于许多网站和应用,这些节省的价值将远高于付费证书的成本。
部署和管理
商用证书可能需要较长的发放时间和手动的证书管理,相比之下免费证书则简单易用,可以自动化部署和管理。