[点晴永久免费OA]使用OpenSSL自签发SSL证书实现局域网内网站https方式访问
|
admin
2025年9月15日 22:40
本文热度 727
|
在最近的项目中遇到因为不是通过https方式访问网站,导致等保测评无法通过,被打上了高风险的标签,而高风险为一票否决项,因此这是必须整改的内容,客户网络为内部网络环境,从网络环境和实际需求看完全可以通过OpenSSL进行自签发SSL证书来实现这一个目的。下边就来看下如何操作的,首先你需要一台Linux服务器并且已经安装了OpenSSL工具,如果没有安装的可以使用yum/apt-get一键安装,安装完成后操作如下:2、找到一台服务器,假如这台服务器就是CA证书服务器,我这里是用的Linux服务器,具体版本(Centos7.9),进入/etc/pki/CA/目录,执行如下命令,将umask设置为077权限,然后使用OpenSSL生成私钥。umask 077;openssl genrsa -out private/cakey.pem 2048
3、执行如下命令生成根证书并且创建两个文件,分别是index.txt和serial,index.txt使用touch创建即可,serial中输入01。openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
[root@security CA]# openssl req -new -x509 -key httpd.key -out cacert.pem -days 3650You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.Country Name (2 letter code) [XX]:CN #国家State or Province Name (full name) []:SC #省份Locality Name (eg, city) [Default City]:CD #城市Organization Name (eg, company) [Default Company Ltd]:chengdu #单位名称Organizational Unit Name (eg, section) []:yunwei #部门名称Common Name (eg, your name or your server's hostname) []:www.ca.cn #填一个域名Email Address []:12345678@qq.com #邮箱
4、找到另外一台服务器,我这里只有一台服务器,到另外一个目录创建相关的证书,假如是/usr/ssl目录执行命令生成证书签署请求,其中hostname项为网站域名,其他内容都和CA证书一致openssl req -new -key server.key -out server.csr
5、用之前生成的CA证书对证书签署请求进行签名,得到服务端证书openssl ca -in /usr/ssl/server.csr -out server.crt -days 3650
这就把证书签好了,然后我们可以在index.txt和serial文件中看下相关数据6、然后就可以去nginx或者Apache httpd中配置HTTPS方式访问了将签署的证书签署请求、服务端的key文件都放到nginx配置目录下:/etc/nginx/下,或者可以自建一个目录用于存放ssl证书文件。user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events { worker_connections 1024;}
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096;
include /etc/nginx/mime.types; default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server { listen 8888; listen [::]:8888; server_name www.mytest.cn; root /var/www/html; return 301 https://www.mytest.cn:9443; }
server { listen 9443 ssl; listen [::]:9443 ssl; server_name www.mytest.cn; root /var/www/html;
ssl_certificate "/etc/nginx/ssl/server.crt"; ssl_certificate_key "/etc/nginx/ssl/server.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
}
配置完成后使用nginx -s reload重新加载配置,让其生效,然后配置本地证书文件和hosts将第三步生成的CA服务器需要对外公开的证书文件cacert.pem复制到电脑本地,后缀名改为crt格式,然后双击安装证书,将其导入到电脑本地显示导入成功即可,由于www.mytest.cn这个域名没有在DNS域名服务商哪里注册,所以需要我们自己在hosts文件中添加域名解析地址,Windows电脑在C:\Windows\System32\drivers\etc下,先将hosts文件拖出来到桌面,然后修改添加如下内容在拖进去修改完成后就可以试着用https方式访问了,由于我使用了天翼云的ECS云主机,但是天翼云如果使用80或者443端口需要进行备案,所以我这里使用9443作为网页端口。这就是使用openssl工具自签发证书解决网页未使用https访问问题。
阅读原文:原文链接
该文章在 2025/9/16 11:56:41 编辑过