一、安装OpenSSL
更新软件包列表
首先确保系统软件包列表是最新的,避免安装旧版本或依赖冲突:
sudo apt update
安装OpenSSL及相关组件
openssl
包即可:sudo apt install openssl
libssl-dev
(包含头文件和静态库):sudo apt install libssl-dev
二、生成SSL证书与密钥(自签名/正式证书)
生成私钥
推荐使用RSA算法(2048位及以上)或ECC算法(如ECDSA),并设置密码保护(可选但建议):
# RSA算法(2048位,AES-256加密私钥)
openssl genpkey -algorithm RSA -out private.key -aes256
# 或ECC算法(secp384r1曲线)
openssl genpkey -algorithm EC -out private.key -pkeyopt ec_paramgen_curve:secp384r1
输入密码后,私钥将保存至private.key
(加密)或private.key
(未加密,需谨慎存放)。
生成证书签名请求(CSR)
CSR用于向证书颁发机构(CA)申请正式证书,或生成自签名证书。执行命令后,按提示输入国家、组织、域名等信息:
openssl req -new -key private.key -out certificate.csr
关键信息说明:
Common Name (CN)
:必须与域名一致(如example.com
);Organization
)可根据实际情况填写。生成自签名证书(测试用)
若无需正式CA证书,可直接生成自签名证书(有效期365天):
openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt
生产环境建议使用Let’s Encrypt等免费CA获取正式证书。
三、配置SSL/TLS服务器(以Nginx为例)
安装Nginx
sudo apt install nginx
配置SSL虚拟主机
编辑Nginx的站点配置文件(如/etc/nginx/sites-available/default
),添加以下server
块:
server {
listen 443 ssl;
server_name your_domain.com; # 替换为你的域名
# 证书与密钥路径
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
# 安全协议与加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5:!RC4:!3DES;
ssl_prefer_server_ciphers on;
# 会话缓存(提升性能)
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 站点根目录
root /var/www/html;
index index.html;
}
# HTTP重定向至HTTPS(可选但推荐)
server {
listen 80;
server_name your_domain.com;
return 301 https://$host$request_uri;
}
测试与重启Nginx
sudo nginx -t
sudo systemctl restart nginx
四、验证SSL配置
命令行验证
使用openssl s_client
命令查看证书详情:
openssl s_client -connect your_domain.com:443 -servername your_domain.com
输出中检查Verify return code
(应为0
,表示证书有效)。
浏览器验证
访问https://your_domain.com
,确认浏览器地址栏显示锁形图标(表示安全连接)。
五、配置文件位置
/etc/ssl/openssl.cnf
(OpenSSL全局配置,如证书生成参数);/etc/ssl/certs/
(存放证书文件,如certificate.crt
);/etc/ssl/private/
(存放私钥文件,如private.key
,权限需设为600
)。六、常见问题排查
依赖错误
若安装或编译时出现openssl/aes.h: No such file or directory
等错误,需安装libssl-dev
包:
sudo apt install libssl-dev
权限问题
私钥文件必须限制为仅所有者可读,否则会导致服务器无法启动:
chmod 600 /etc/ssl/private/private.key
版本兼容性
Debian默认仓库中的OpenSSL版本可能较旧,若需最新版本,可从源码编译安装(参考步骤二中的手动编译部分),但需注意与系统软件的兼容性。