[点晴永久免费OA]使用OpenSSL自签发SSL证书实现局域网内网站https方式访问
|
admin
2025年9月15日 22:40
本文热度 128
|
在最近的项目中遇到因为不是通过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 3650
You are about to be asked to enter information that will be incorporated
into 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 blank
For 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 编辑过