SSL 原理及 https 配置
SSL 原理
SSL 简介
SSL (Secure Socket Layer), 中文名称 安全套接字.
SSL 的出现, 主要是为了解决Web浏览器和Web服务器之间的安全传输问题.
主要概念
SSL 中主要有如下几个概念:
- 传输加密: 所有消息加密后传输
- 身份验证: 客户端验证可选, 服务端验证强制
- 传输完整性: 传输的消息的完整性检查 (使用 MAC)
建立安全连接的过程
过程图:
步骤说明:
- client 发送 clientHello 信息给 server
- server 识别之后发送 serverHello 给 client, 这个过程建立安全能力, 包括协议版本, sessionID, 加密算法, 压缩方法, 随机数.
- 此时 SSL 握手的第一阶段完成
- server 会向 client 发送server的证书 (证书中有 server 端的公钥)
- server 向 client 发送密钥交换信息. 同时还会请求 client 端的证书.
- server 发送 Hellodone 信息, 表示 server 端的请求结束.
- 此时 SSL 握手的第二阶段完成
- client 发送client证书 (client没有证书的话, 可以回复 server 无证书)
- client 生成一个对称密码, 并发送给 server (这里的信息用收到的 server 端公钥来加密)
- 如果 client 发送了client证书, 那么还会发送证书验证信息
- 此时 SSL 握手的第三阶段完成
- client 通知 server 以后通信用之前发送的对称密码加密, 并结束握手
- server 通知 client 以后通信用之前发送的对称密码加密, 并结束握手
https 配置 (以 nginx 为例)
centos6.6 x86_64 上实验
-
生成证书
cd /etc/nginx openssl genrsa -des3 -out server.key 1024 # 设置证书密码 openssl req -new -key server.key -out server.csr # 根据提示输入各种信息 cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
-
设置 https 的证书
cat /etc/nginx/ssl.conf # HTTPS server # server { listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }
-
重启 nginx
nginx -s reload
-
从浏览器中可以查看是否配置成功 (https://hostip/)
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 35+程序员的转型之路:经济寒冬中的希望与策略
· JavaScript中如何遍历对象?
· 领域模型应用
· 记一次 ADL 导致的 C++ 代码编译错误
· MySQL查询执行顺序:一张图看懂SQL是如何工作的
· 35+程序员的转型之路:经济寒冬中的希望与策略
· 全球首位 AI 程序员 Devin 诞生了,对于程序员的影响到底多大?
· 使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
· 做这么个免费在线拼图工具,如何赚钱呢
· 我在厂里搞wine的日子