[TOC]
SSL证书简介
SSL证书(Secure Sockets Layer Certificate)是一种数字证书,它在现代网络环境中扮演着至关重要的角色,主要用于实现网站和应用程序的安全通信。SSL证书遵循SSL/TLS协议,由受信任的证书颁发机构(CA, Certificate Authority)签发,经过严格的身份验证过程,以确保证书持有者的真实身份。
SSL证书的核心作用
服务器身份验证
证明网站或服务器的所有权和合法性,使访问者能够确认正在与正确的目标进行交互,避免被假冒网站欺骗
数据加密
在客户端(如Web浏览器)与服务器之间建立加密通道,确保在两者间传输的数据(如登录凭证、交易信息等)不被第三方窃取或监听。
数据完整性
通过散列算法确保数据在传输过程中未经篡改。一旦网站安装了有效的SSL证书,浏览器地址栏通常会显示绿色锁图标或“HTTPS”前缀,表示该网站启用了安全链接。这对于电子商务、网上银行、个人信息收集等涉及隐私和敏感信息交换的在线服务尤其重要,有助于提升用户信任度和整体网络安全水平。
SSL证书颁发机构
- Let’s Encrypt(提供免费SSL证书的非营利性CA)
- DigiCert
- Sectigo (原Comodo CA)
- GlobalSign•GeoTrust
- Symantec (现已合并至DigiCert品牌下)
- Thawte
- RapidSSL
- AlphaSSL
- GoDaddy
- TrustAsia(亚洲诚信,中国CA)
服务器说明
可使用 lsb_release -a 命令查看
LSB Version: core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
申请Let’s Encrypt 颁发的ssl证书
此次web服务器使用的是nginx,域名为:my-domain.com,可根据实际情况替换
下载脚本
curl https://get.acme.sh | sh -s email=123@123.123
source ~/.bashrc
nginx中配置域名
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
# 此处配置域名
server_name my-domain.com;
}
申请证书
acme.sh --issue -d my-domain.com --nginx
安装证书
此步骤会默认将key.pem 、cert.pem拷贝到/etc/nginx/ssl/my-domain.com/目录下
acme.sh --install-cert -d my-domain.com \
--key-file /etc/nginx/ssl/my-domain.com/key.pem \
--fullchain-file /etc/nginx/ssl/my-domain.com/cert.pem \
--reloadcmd "service nginx force-reload"
参考:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
查看安装的证书信息
acme.sh --info -d my-domain.com
配置nginx证书信息
server {
listen 443 ssl;
server_name my-domain.com;
server_tokens off; # 禁止在响应报文中包含Nginx版本信息
# ssl证书地址
ssl_certificate_key /etc/nginx/ssl/my-domain.com/key.pem;
ssl_certificate /etc/nginx/ssl/my-domain.com/cert.pem;
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
if ($host != 'my-domain.com' ) {
return 301 https://my-domain.com$request_uri;
}
location / {
root /etc/nginx/web/;
index index.html index.htm;
}
}
# 重载nginx
service nginx reload
访问地址
https://my-domain.com