Https 证书

https使用证书加密,涉及到几个名词:SSL、X.509、PEM、DER、CRT、CER、KEY、CSR等。

SSL

http协议默认情况下不加密传输内容,导致如果数据包被拦截,数据就会泄露,对于某些安全性要求较高的场合,就一定要加密,https就是一种基于SSL带加密的http协议。

OpenSSL

OpenSSL是SSL的一个实现方式,SSL是一种规范。

证书标准

X.509

证书标准的一种,定义了证书需要包含哪些内容。

编码格式(PEM、DER)

PEM Privacy Enhanced Mail,以-----BEGIN CERTIFICATE-----开头,-----END CERTIFICATE-----结尾,内容BASE64编码。

DER Distinguished Encoding Rules,二进制不可读。

相关文件

CRT certificate,linux系统,证书,可能是pem或者der格式。

CER certificate windows系统,证书。

KEY 通常用来存放一个公钥或私钥,并非X.509证书。

PEM KEY: openssl rsa -in key.key -text -noout
DER KEY: openssl rsa -in key.key -text -noout -inform der

CSR Certificate Signing Request,证书签名请求。

openssl req -noout -text -in csr.csr
openssl req -noout -text -in csr.csr -inform der

证书编码转换

PEM 2 DER:openssl x509 -in cert.crt -outform der -out cert.der
DER 2 PEM:openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

获取证书

使用命令生成csr

openssl req -newkey rsa:2048 -new -nodes keyout my.key -out my.csr

自己签名的证书

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

过程中实际有用的只有Common name,填写服务器域名或者ip。

转载于:https://www.cnblogs.com/avalon-merlin/p/10495259.html

### HTTPS 证书配置操作指南 在 Linux 系统中,HTTPS 证书的配置与管理是确保网络通信安全的重要步骤。以下是详细的 HTTPS 证书配置操作指南: #### 1. 获取 HTTPS 证书 获取 HTTPS 证书可以通过多种方式完成,例如购买商业证书或使用免费的证书颁发机构(CA)如 Let's Encrypt。Let's Encrypt 提供自动化工具 Certbot,可以简化证书申请和续期流程[^2]。 ```bash sudo apt update sudo apt install certbot ``` 通过 Certbot 获取证书时,需要指定您的域名以及服务器类型(如 Nginx 或 Apache)。例如,为 Nginx 配置证书的命令如下: ```bash sudo certbot --nginx certonly -d example.com -d www.example.com ``` 这将生成两个关键文件:`fullchain.pem` 和 `privkey.pem`,分别代表完整的证书链和私钥[^3]。 #### 2. 配置 Web 服务器 根据所使用的 Web 服务器(如 Nginx 或 Apache),需要对配置文件进行修改以启用 HTTPS。 ##### (1) Nginx 配置 编辑 Nginx 的站点配置文件,通常位于 `/etc/nginx/sites-available/` 目录下。添加以下内容以启用 HTTPS: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 证书路径 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 私钥路径 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 重启 Nginx 服务以应用更改: ```bash sudo systemctl restart nginx ``` ##### (2) Apache 配置 对于 Apache,需要启用 SSL 模块并编辑虚拟主机配置文件: ```apache <VirtualHost *:443> ServerName example.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> ``` 重启 Apache 服务: ```bash sudo systemctl restart apache2 ``` #### 3. 启用 HSTS 和其他最佳实践 为了进一步增强安全性,可以启用 HSTS(HTTP Strict Transport Security)策略。在 Nginx 中,可以通过以下指令实现: ```nginx add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; ``` 此外,还可以配置完美的前向保密(PFS)以确保每次会话都使用新的密钥对进行加密[^4]。 #### 4. 自动化证书续期 Let's Encrypt 的证书有效期为 90 天,因此建议设置自动续期任务。可以使用以下命令测试续期功能: ```bash sudo certbot renew --dry-run ``` 如果测试成功,可以将以下命令添加到系统的定时任务中: ```bash sudo crontab -e ``` 添加以下行以每天检查并续期证书: ```bash 0 0 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx ``` --- ### 示例代码:Nginx 配置 HTTPS 以下是一个完整的 Nginx 配置示例: ```nginx server { listen 80; server_name example.com; return 301 https://$host$request_uri; # 强制重定向到 HTTPS } server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值