[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 ~/.bashrcnginx中配置域名
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