前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网自签发https 证书

内网自签发https 证书

作者头像
老K博客
发布2024-05-20 14:05:19
5340
发布2024-05-20 14:05:19
举报
文章被收录于专栏:老K博客

HTTPS(全称:HyperText Transfer Protocol Secure)是HTTP(超文本传输协议)的安全版本。本质上,HTTPS在HTTP的基础上,通过SSL/TLS协议提供了数据加密、完整性保护和身份验证,以确保网络数据传输的安全性。HTTPS被广泛用于互联网上的安全通信,特别是在线交易和处理敏感信息时,本文以Nginx为例部署自签发https证书

一、HTTPS的主要特点包括:

  • 加密:HTTPS利用SSL/TLS协议在客户端和服务器之间建立加密连接,保护数据传输过程中的隐私和安全,防止数据在传输过程中被窃听或篡改。
  • 数据完整性:确保数据在传输过程中未被篡改,保持了数据的完整性。
  • 身份验证:通过SSL/TLS证书帮助确认服务器的真实身份,防止DNS劫持或中间人攻击等安全问题。 二、HTTPS的工作原理:
  • 客户端发送HTTPS请求:用户在浏览器中输入一个HTTPS的URL,浏览器向服务器发送一个请求,请求建立SSL连接。
  • 服务器响应:服务器向客户端发送其SSL证书,该证书包含服务器的公钥以及证书的颁发机构等信息。
  • 客户端验证证书:客户端(如浏览器)验证证书的有效性,确保它是由受信任的证书颁发机构(CA)签发的,并且证书对应的域名与正在访问的域名匹配。如果证书验证通过,则继续;如果失败,将警告用户连接不安全。
  • 密钥交换:客户端生成一个随机的对称密钥,使用服务器的公钥加密这个对称密钥,并发送给服务器。服务器使用自己的私钥解密,获取对称密钥。
  • 加密通信:双方使用上述协商的对称密钥加密通信内容,确保数据传输的安全性。 三、为什么HTTPS如此重要:
  • 隐私保护:HTTPS加密了用户与网站之间的所有交互,保护了用户数据的隐私。
  • 安全性增强:通过身份验证和数据完整性校验,HTTPS减少了被中间人攻击的风险。
  • 信任增强:网站使用HTTPS可以在浏览器地址栏显示安全锁标志,增加用户对网站的信任。
  • 搜索引擎优化:许多搜索引擎,包括Google,对使用HTTPS的网站给予更高的排名。 四、部署HTTPS需要满足以下基本条件和步骤: 获取有效的SSL/TLS证书:

购买证书:你可以从许多证书颁发机构(CA)购买SSL/TLS证书,例如VeriSign、Comodo、Let's Encrypt等。这些证书的价格和类型(如域名验证DV、组织验证OV、扩展验证EV)不同,适用于不同的需求和预算。 免费证书:Let's Encrypt提供了免费的SSL/TLS证书,适用于大多数基本需求,并且支持自动续签。这使得HTTPS更容易为各种网站所采纳。 在服务器上配置SSL/TLS证书:

证书的安装和配置过程会根据你的服务器软件(如Apache、Nginx、IIS等)而异。通常,你需要将获取的证书(通常是一个.crt文件)和私钥(一个.key文件)安装到服务器上,并且可能需要安装证书颁发机构的中间证书。 配置过程中,你需要修改服务器的配置文件,指定证书文件和私钥文件的位置,并且可能需要指定使用的加密套件和协议版本等安全设置。 确保网站资源通过HTTPS加载:

确保网站上所有的资源(如图片、脚本、样式表等)都通过HTTPS而非HTTP加载,避免“混合内容”问题,这可能会导致浏览器安全警告。 对于外部资源,确保链接使用HTTPS,或者考虑将它们托管在你自己的服务器上。 重定向HTTP请求到HTTPS:

配置服务器自动将所有HTTP请求重定向到HTTPS,确保用户即使输入了HTTP URL也能通过安全的HTTPS连接访问网站。 在服务器配置中实现重定向通常很简单,例如在Apache服务器上,你可以使用.htaccess文件来设置重定向规则。 更新网站配置和第三方服务:

更新网站的内部链接,确保它们使用HTTPS。 如果你使用了第三方服务(如社交媒体登录、在线支付网关等),请确保它们支持HTTPS,并且配置正确。 测试HTTPS配置:

在全面启用HTTPS之前,使用工具如Qualys SSL Labs的SSL Server Test进行全面测试,确保证书正确安装,且服务器配置符合最佳实践。

Nginx 部署本地生成https

本地生成在没有域名的情况下基于ip生成如果存在域名可以基于certbot 生成免费证书

1 检查nginx是否支持配置
代码语言:javascript
复制
nginx -V
1664992bb8883d.png
1664992bb8883d.png
2 证书生成
代码语言:javascript
复制
ubuntu:
sudo apt-get install libssl-dev

centos:
yum install openssl
yum install openssl-devel
3 生成证书
代码语言:javascript
复制
1进入证书目录

cd /etc/nginx/sslkey
 

2创建本地私有密钥

openssl genrsa -out ssl.key 2048
 
3按提示输入即可

openssl req -new -key ssl.key -out ssl.csr
 

4创建证书crt

openssl x509 -req -days 1460 -in ssl.csr -signkey ssl.key -out ssl.crt
 

5创建证书pem

openssl dhparam -out ssl.pem 2048
4 Nginx配置
代码语言:javascript
复制
server {
    listen       80;
    return 301 https://$host$request_uri;
}

server {
    listen 443   ssl;
    ssl_certificate                          /etc/nginx/sslkey/ssl.crt;
    ssl_certificate_key                        /etc/nginx/sslkey/ssl.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}

检查配置项,并重启

代码语言:javascript
复制
nginx -t 

nginx -s reload

自签名证书是一种由服务器管理员自己创建的证书,而不是由 CA 颁发的。这种证书提供了相同级别的加密,但不提供第三方验证身份的信任。自签名证书通常用于内部网络、测试环境或其他不需要公众信任的场景。使用自签名证书的主要问题是浏览器会警告用户这个证书不受信任,因为它没有由已知的 CA 颁发。用户需要手动添加一个例外或信任该证书,才能访问网站。

本文共 1401 个字数,平均阅读时长 ≈ 4分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024年05月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、HTTPS的主要特点包括:
  • Nginx 部署本地生成https
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档