给企业做网站需要什么信息,网络空间安全专业大学排名,温州的网站建设公司,吴忠市利通区建设局网站文章目录 项目场景#xff1a;问题1问题描述原因分析解决步骤解决方案 问题2问题描述原因分析解决方案 参考文章 项目场景#xff1a;
项目场景#xff1a;基于flask的网站使用https加密通信一文中遇到的问题记录 问题1
问题描述
使用下面的命令生成自签名的SSL/TLS证书和… 文章目录 项目场景问题1问题描述原因分析解决步骤解决方案 问题2问题描述原因分析解决方案 参考文章 项目场景
项目场景基于flask的网站使用https加密通信一文中遇到的问题记录 问题1
问题描述
使用下面的命令生成自签名的SSL/TLS证书和私钥
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pemopenssl: 这是调用OpenSSL程序的命令。req: 这是OpenSSL的请求(certificate request)命令用于生成证书请求或自签名证书。-new: 这个选项告诉OpenSSL创建一个新的证书请求或证书。-x509: 这个选项指示OpenSSL生成一个X.509格式的证书。-days 365: 这个选项设置证书的有效期为365天。-nodes: 这个选项指定在生成私钥时不使用密码即生成的私钥不会被加密。-out cert.pem: 这个选项指定生成的证书文件的名称和路径这里是cert.pem。-keyout key.pem: 这个选项指定生成的私钥文件的名称和路径这里是key.pem。
执行这个命令后得到两个文件cert.pem证书文件和key.pem私钥文件。这些文件可以用于配置Web服务器或其他需要SSL/TLS证书的服务。
这种方式生成的证书无法被浏览器信任会在浏览器中产生安全警告, 即使在本地windows系统安装cert.pem证书后 仍然提示不安全。 原因分析
原因未知 解决步骤
浏览器安装证书文件后仍然发出安全提示。升级openssl后重新生成证书和私钥 仍然发出安全提示。 查看openssl版本 , 版本有点老 于是决定升级为1.1.1k[rootcentos~]# openssl version
OpenSSl 1.0.2k-fips 26 Jan 2017openssl 升级命令# 步骤 1: 下载 OpenSSL 1.1.1k
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
# 步骤 2: 解压源代码
tar -zxvf openssl-1.1.1k.tar.gz
# 步骤 3: 编译并安装
cd openssl-1.1.1k
./config --prefix/usr/local/openssl --openssldir/usr/local/ssl shared zlib
make
sudo make install
# 步骤 4: 首先备份旧版本的OpenSSL然后创建软链接
mv /usr/bin/openssl /usr/bin/openssl.bak
sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# 更新动态链接库
sudo echo /usr/local/openssl/lib | sudo tee -a /etc/ld.so.conf
sudo ldconfig
# 验证新版本
openssl version生成CA证书 通过CA证书生成网站证书 仍然发出安全提示。 OpenSSL生成CA证书的步骤# 步骤 1: 生成私钥, 使用以下命令生成CA的私钥。建议使用2048位或更高位数以确保安全性。
openssl genpkey -algorithm RSA -out ca.key -pkeyopt rsa_keygen_bits:2048
# 步骤 2: 创建自签名CA证书
# 使用私钥生成一个自签名的CA证书。你需要提供证书有效期、组织信息等。
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt \
-subj /CUS/STYourState/LYourCity/OYourOrganization/CNYourCommonName
# 验证CA证书, 使用以下命令检查生成的CA证书是否正确
openssl x509 -in ca.crt -noout -textCA证书生成网站服务器证书步骤# 如果你需要生成服务器证书并由CA签名你可以创建一个CSR然后使用CA的私钥来签发证书
# 步骤 1:生成服务器的私钥
openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048
# 步骤 2: 创建CSR
openssl req -new -key server.key -out server.csr \
-subj /CUS/STYourState/LYourCity/OYourOrganization/CNYourServerName
# 步骤 3:使用CA的私钥和证书签发证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-out server.crt -days 365 -sha256
# 验证签发的证书 使用以下命令检查签发的证书是否正确
openssl x509 -in server.crt -noout -text解决方案 方案一 配置文件 在myflaskapp/certs下创建文件·myflaskapp.com.conf, 增加下面配置信息[req]
prompt no
default_bits 4096
default_md sha256
encrypt_key no
string_mask utf8onlydistinguished_name cert_distinguished_name
req_extensions req_x509v3_extensions
x509_extensions req_x509v3_extensions[ cert_distinguished_name ]
C CN
ST BJ
L BJ
O HomeLab
OU HomeLab
CN myflaskapp.com[req_x509v3_extensions]
basicConstraints critical,CA:true
subjectKeyIdentifier hash
keyUsage critical,digitalSignature,keyCertSign,cRLSign #,keyEncipherment
extendedKeyUsage critical,serverAuth,clientAuth
subjectAltName alt_names[alt_names]
DNS.1 myflaskapp.com
DNS.2 *.myflaskapp.com生成 SSL 证书和私钥 我们还需要一个 SSL 证书和私钥 基于配置文件使用 OpenSSL 来生成自签名的证书, 如下所示# 定义文件名称
OUTPUT_FILENAMEmyflaskapp.com
# 生成证书和私钥
openssl req -x509 -newkey rsa:2048 \
-keyout $OUTPUT_FILENAME.key \
-out $OUTPUT_FILENAME.crt \
-days 3600 -nodes \
-config ${OUTPUT_FILENAME}.conf这将生成一个有效期为 3600 天的自签名证书 myflaskapp.com.crt 和私钥 myflaskapp.com.key。 方案二 使用mkcert命令。 安装mkcert# 根据自己的系统下载最新的二进制文件
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
# 二进制文件添加可执行权限并移动到 $PATH 中
chmod x mkcert
mv mkcert /usr/local/bin/
# 查看版本
mkcert -version生成根证书mkcert -install生成服务器证书mkcert myflaskapp.comPC安装根证书# 查看根证书位置
mkcert -CAROOT
/root/.local/share/mkcert/root/.local/share/mkcert中有两个文件rootCA-key.pem 和 rootCA.pem。将 rootCA.pem 复制到 PC 上并将其后缀改为 .crt。双击安装即可注意选择受信任的根证书颁发机构。
问题2
问题描述
Nginx反向代理 PC浏览器无法访问网站。 配置文件 myflaskapp/nginx/myflaskapp.conf 中设置反向代理规则如下:server {listen 80;server_name myflaskapp.com;return 301 https://$server_name$request_uri;
}server {listen 443 ssl;server_name myflaskapp.com www.myflaskapp.com;ssl_certificate /etc/nginx/ssl/cert.pem;ssl_certificate_key /etc/nginx/ssl/key.pem;location / {proxy_pass http://127.0.0.1:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}原因分析
nginx使用的是docker启动 proxy_pass http://127.0.0.1:5000 代理地址配置的容器的地址 而容器内并没有web服务所以代理没有成功 解决方案
在 Nginx 配置文件 myflaskapp/nginx/myflaskapp.conf 中将 proxy_pass http://127.0.0.1:5000 代理地址的IP修改为宿主机IPproxy_pass http://your-host-ip:5000 即可。 参考文章
CentOS7.9下升级OpenSSL到OpenSSL 1.1.1k一个一键即可生成SSL证书的工具零配置从此告别繁琐Star 46Kmkcert 使用指南如何快速创建自签名 SSL 证书