自签生成SSL证书IIS和nginx全流程
一、IIS自签名证书生成与配置(Windows环境)
(一)生成自签名证书
1. 打开IIS管理器
- 在服务器上,点击“开始”菜单,选择“管理工具”,然后点击“Internet Information Services (IIS) 管理器”。
- 或者直接在运行窗口(快捷键
Win+R)中输入inetmgr,然后按回车键。
2. 创建自签名证书
- 在IIS管理器中,确保你选择了服务器节点(即服务器名称),而不是某个具体的网站。
- 在右侧的“功能视图”中,找到“服务器证书”功能,双击它。
- 在“服务器证书”页面中,你会看到一个操作面板。点击右侧的“创建自签名证书”按钮。
- 在弹出的“创建自签名证书”对话框中,输入一个友好的名称,例如“LocalTestCert”或“MySelfSignedCert”。这个名称只是为了方便你识别这个证书,不会显示给用户。
- 点击“确定”按钮。IIS会自动创建一个自签名证书,并将其添加到服务器证书列表中。
(二)将证书绑定到网站
1. 选择需要绑定证书的网站
- 在IIS管理器中,展开服务器节点,找到并选择你想要启用HTTPS的网站。
2. 添加HTTPS绑定
- 在右侧的“操作”面板中,点击“绑定”按钮。
- 在弹出的“网站绑定”对话框中,你会看到当前网站的所有绑定信息。
- 点击“添加”按钮,以添加一个新的绑定。
- 在“添加网站绑定”对话框中:
- 类型:选择https。
- IP地址:通常选择所有未分配,这样无论客户端通过哪个IP地址访问,都能使用该证书。如果你的服务器有多个IP地址,并且你只想在某个特定IP上启用HTTPS,可以选择对应的IP地址。
- 端口:输入443。这是HTTPS服务的默认端口号。如果你有特殊需求,也可以使用其他端口号,但客户端访问时需要明确指定端口号。
- SSL证书:在下拉列表中,找到并选择你刚刚创建的自签名证书(例如“LocalTestCert”)。
- 点击“确定”按钮完成绑定。
3. 验证配置
- 在IIS管理器中,选中你刚刚配置的网站,然后点击右侧的“启动”按钮,确保网站能够正常运行。
- 打开浏览器,访问https://<你的服务器IP或域名>。由于这是一个自签名证书,浏览器会弹出安全警告,提示证书不受信任。你可以点击“高级”选项,然后选择“继续前往<你的服务器IP或域名>(不安全)”,以查看网站是否能够通过HTTPS正常访问。
二、Nginx自签名证书生成与配置(Linux环境)
(一)生成自签名证书
1. 安装OpenSSL
- 打开终端。
- 在大多数Linux发行版中,OpenSSL通常已经预装。如果没有安装,可以通过包管理器安装。例如
- 在基于Debian的系统(如Ubuntu)中:
sudo apt update sudo apt install openssl - 在基于Red Hat的系统(如CentOS)中:
-
sudo yum install openssl
-
- 在基于Debian的系统(如Ubuntu)中:
2. 创建证书存储目录
- 为了方便管理,建议创建一个专门的目录来存放证书和私钥文件。例如:
-
sudo mkdir -p /usr/local/nginx/ssl cd /usr/local/nginx/ssl
-
3. 生成私钥
- 在终端中,运行以下命令生成一个2048位的RSA私钥文件:
sudo openssl genrsa -out server.key 2048
-
server.key是私钥文件的名称,你可以根据需要修改文件名。2048表示密钥长度为2048位,这是目前推荐的安全长度。你也可以选择更高(如3072位或4096位),但会增加计算开销。
4. 生成自签名证书
- 生成自签名证书时,需要填写一些信息,这些信息将嵌入到证书中。运行以下命令:
-
sudo openssl req -new -x509 -days 365 -key server.key -out server.crt- -new:表示生成一个新的证书签名请求(CSR)。
- -x509:表示直接生成自签名证书,而不是生成CSR等待CA签名。
- -days 365:表示证书的有效期为365天。你可以根据需要调整有效期,例如-days 730表示有效期为2年。
- -key server.key:指定私钥文件。
- -out server.crt:指定生成的证书文件名称。
-
- 在执行上述命令时,系统会提示你输入一些信息:
- Country Name (2 letter code):国家代码,例如CN(中国)、US(美国)。
- State or Province Name:省份或州的名称,例如Beijing。
- Locality Name:城市名称,例如Beijing。
- Organization Name:组织名称,例如My Company。
- Organizational Unit Name:部门名称,例如IT Department。
- Common Name (e.g. server FQDN or YOUR name):这是最重要的字段,通常填写你的域名或服务器IP地址。例如example.com或192.168.1.100。
- Email Address:电子邮件地址,可选。
(二)配置Nginx使用自签名证书
1. 编辑Nginx配置文件
- 打开Nginx的配置文件。默认情况下,配置文件位于/etc/nginx/nginx.conf,或者在/etc/nginx/sites-available/目录下有单独的配置文件。
- 如果你使用的是默认配置文件,可以直接编辑nginx.conf。如果使用的是虚拟主机配置文件,找到对应的文件进行编辑。例如:
sudo vim /etc/nginx/sites-available/default- 或
sudo vim /usr/local/nginx/conf/nginx.conf
2. 添加HTTPS配置
- 在配置文件中,找到或创建一个
server块,用于配置HTTPS服务。例如:-
server { listen 443 ssl; # 监听443端口,并启用SSL server_name your_domain_or_ip; # 替换为你的域名或IP地址 ssl_certificate /etc/nginx/ssl/server.crt; # 指定证书文件路径 ssl_certificate_key /etc/nginx/ssl/server.key; # 指定私钥文件路径 # 配置网站的根目录 root /var/www/html; # 配置默认页面 index index.html index.htm; # 其他配置(如伪静态规则等)... }
-
- listen 443 ssl;:表示监听443端口,并启用SSL。
- server_name:填写你的域名或IP地址。如果需要支持多个域名,可以用空格分隔,例如server_name example.com www.example.com。
- ssl_certificate:指定证书文件的路径。
- ssl_certificate_key:指定私钥文件的路径。
- root和index:根据你的网站实际情况配置网站的根目录和默认页面。
3. 测试配置文件
- 在终端nginx安装目录中运行以下命令,检查Nginx配置文件是否有语法错误:
sudo ./sbin/nginx -t conf/nginx.conf
- 如果配置文件没有问题,你会看到类似以下的输出:
-
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful - 如果有错误,根据提示信息修复配置文件中的错误。
4. 重启Nginx服务
- 如果配置文件测试通过,运行命令重启Nginx服务,使配置生效:
sudo systemctl restart nginx / ./sbin/nginx -s reload
(三)验证HTTPS访问
- 打开浏览器,访问https://<your_domain_or_ip>。
- 由于这是一个自签名证书,浏览器会弹出安全警告,提示证书不受信任。你可以点击“高级”选项,然后选择“继续前往<your_domain_or_ip>(不安全)”,以查看网站是否能够通过HTTPS正常访问。
- 如果一切正常,你应该能够看到你的网站内容,并且地址栏显示为https。
三、常见问题及解决方法
(一)证书不受信任问题
问题描述:
无论是IIS还是Nginx,使用自签名证书时,浏览器都会提示证书不受信任,用户需要手动接受证书才能访问网站。
解决方法:
虽然自签名证书在生产环境中不推荐使用,但在本地开发或测试环境中,可以通过以下方法解决证书不受信任的问题。
- 将自签名证书添加到受信任的根证书颁发机构:
Windows(IIS环境):- 打开“运行”窗口(快捷键Win+R),输入certmgr.msc,然后按回车键。
- 在“证书管理器”中,展开“受信任的根证书颁发机构”。
- 右键点击“证书”,选择“所有任务” -> “导入”。
- 导航到IIS生成的自签名证书文件(通常是.cer格式),选择该证书并完成导入。
- 重新打开浏览器,访问HTTPS网站时,浏览器应该不会再提示证书不受信任。
- Linux(Nginx环境):
- 将生成的自签名证书文件(server.crt)复制到客户端机器上。
- 在客户端机器上,将证书文件添加到受信任的证书存储中。例如,在Ubuntu系统中,可以使用以下命令:
-
sudo cp server.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
-
- 重新打开浏览器,访问HTTPS网站时,浏览器应该不会再提示证书不受信任。
版权声明:本文为CSDN博主「龙仔725」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44858074/article/details/147410124
四、Tomcat自签名证书
1、生成自签名证书
可以使用Java自带的keytool工具来生成。打开命令行工具,并执行以下命令:
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365
-genkey指示keytool生成一个新的密钥对。-alias是密钥对的别名,这里用tomcat。-keyalg指定密钥算法,这里使用RSA。-keysize指定密钥长度,这里使用2048位。-keystore指定密钥库的名称和位置,这里创建了一个名为keystore.jks的文件。-validity指定证书的有效期,单位是天,这里设置为365天。
执行此命令后,系统会提示你输入密钥库的密码(例如:changeit),以及一些关于你的组织信息(如:组织名、组织单位等)。这些信息可以根据你的需求填写
2、配置tomcat使用自签名证书
生成完密钥库和证书后,你需要将这个密钥库配置到Tomcat中。这通常通过修改Tomcat的配置文件来实现。
对于Tomcat 8及更高版本:
-
打开Tomcat的配置文件
server.xml,通常位于<Tomcat安装目录>/conf/目录下。 -
在
<Connector>标签中配置SSL,如下所示:-
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/keystore.jks" keystorePass="changeit"/>port是HTTPS端口,默认是8443。keystoreFile是你的密钥库文件路径,这里是相对路径,根据你的实际情况可能需要调整为绝对路径。keystorePass是密钥库的密码。
-
-
验证配置
- 重新启动Tomcat后,你可以通过浏览器访问
https://localhost:8443(或者你的服务器地址和端口)来测试HTTPS是否配置成功。你应该会看到一个由你的自签名证书签发的安全连接警告,因为这是一个自签名证书,浏览器会提示证书不是可信的。你可以选择继续访问网站来忽略这个警告
- 重新启动Tomcat后,你可以通过浏览器访问
无论风雨,和自己一决胜负吧

浙公网安备 33010602011771号