简介:
通常我们在开发项目的过程中,一般都是使用的http来进行测试;但当部分项目上线或和其他第三方对接时,需要用到https协议时,此时可能就会有部分和http不同的请求方式,为此我们需要在开发或测试环境部署一个https的协议环境,也就是所谓的给ng加上ssl验证;配置自签名证书通常用于开发、测试或在小型内部网络中部署安全的 HTTPS 服务。以下是如何创建并配置自签名证书的步骤,以便在 Web 服务器(例如 Nginx、Apache)上使用。
1. 生成私钥 (Private Key)
首先,你需要生成一个私钥。这个私钥将用来签署你的自签名证书。
openssl genrsa -out mydomain.key 2048
这将生成一个 2048 位的 RSA 私钥,并将其保存到 mydomain.key文件中。
2.以命令的方式生成证书:
2.1. 生成证书签名请求 (CSR)
接下来,使用私钥生成一个证书签名请求 (CSR),其中包括有关你的组织和域名的信息。
openssl req -new -key mydomain.key -out mydomain.csr
执行上述命令后,系统会要求你输入以下信息:
-
Country Name (2 letter code) [XX]: 国家代码,输入两位字母的国家代码。例如,中国是
CN。 -
State or Province Name (full name) [Some-State]: 省或州的名称。例如,北京市,可以填
Beijing。 -
Locality Name (eg, city) []: 城市名称。例如,北京市,可以填
Beijing。 -
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 组织或公司的名称。例如,某某公司,可以填
Example Corp. -
Organizational Unit Name (eg, section) []: 部门名称。例如,可以填
IT Department或者留空。 -
Common Name (e.g. server FQDN or YOUR name) []: 服务器的完全限定域名 (FQDN)。这是非常重要的部分,填入你网站的域名,例如
www.example.com。 -
Email Address []: 联系的电子邮件地址。例如
admin@example.com。 -
A challenge password []: 挑战密码。一般情况下,可以留空,直接按回车键。
-
An optional company name []: 可选的公司名称。如果前面的“Organization Name”已经填写,这里可以留空。
示例填写
以下是一个示例的填写过程:
Country Name (2 letter code) [XX]: CN
State or Province Name (full name) [Some-State]: Beijing
Locality Name (eg, city) []: Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Example Corp
Organizational Unit Name (eg, section) []: IT Department
Common Name (e.g. server FQDN or YOUR name) []: www.example.com
Email Address []: admin@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
2.2. 创建自签名证书
现在可以使用私钥和 CSR 生成自签名证书
openssl x509 -req -days 365 -in mydomain.csr -signkey mydomain.key -out mydomain.crt
这个命令生成了一个有效期为 365 天的自签名证书,并将其保存到 mydomain.crt 文件中。
3.以配置文件的方式生成证书:
3.1.创建配置文件:
创建一个server.cnf配置文件,配置文件中填写需要申请的证书必要参数,详细的参数不做具体说明,感兴趣的可以去官方文档自行查看(以下配置文件修改common地址和DNS地址为你自己的域名后可以直接使用):
openssl-x509文档:https://www.openssl.org/docs/man3.0/man1/openssl-x509.html
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CN
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Beijing
localityName = Locality Name (eg, city)
localityName_default = Beijing
0.organizationName = Organization Name (eg, company)
0.organizationName_default = mydomain
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = mydomain
commonName = Common Name (eg, fully qualified host name)
commonName_default = www.mydomain.com
commonName_max = 64
emailAddress = Email Address
emailAddress_default = mydomain@email.com
emailAddress_max = 64
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.mydomain.com
DNS.2 = www.mydomain.com
IP.1 = 127.0.0.1
3.2. 创建自签名证书
运行openssl命令,指定私钥文件和server.cnf配置文件,填写需要输出的证书名称申请自签证书:
openssl req -new -x509 -nodes -days 365 -keyout mydomain.key -out mydomain.crt -config server.cnf
4. 配置 Web 服务器使用自签名证书
4.1.在 Nginx 中配置
打开 Nginx 配置文件(例如 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default)并添加或修改以下部分:
server {
listen 443 ssl;
server_name mydomain.com;
ssl_certificate /yourpath/mydomain.crt;
ssl_certificate_key /yourpath/mydomain.key;
location / {
# 配置你的网站路径
}
}
确保将 /yourpath替换为实际证书和私钥文件的路径。
这里监听的端口后的ssl就是指开启https的ssl验证功能,若不开则删除ssl即可。
4.2.在 Apache 中配置
打开 Apache 配置文件(例如 /etc/httpd/conf/httpd.conf 或 /etc/apache2/sites-available/000-default.conf),并添加或修改以下部分:
<VirtualHost *:443>
ServerName mydomain.com
SSLEngine on
SSLCertificateFile /path/to/mydomain.crt
SSLCertificateKeyFile /path/to/mydomain.key
DocumentRoot /var/www/html
# 配置你的网站路径
</VirtualHost>
同样,将 /path/to/ 替换为实际文件的路径。
5. 重新启动 Web 服务器
在配置完成后,重新启动 Web 服务器以使更改生效。
对于 Nginx:
sudo systemctl restart nginx
对于 Apache:
sudo systemctl restart apache2
6. 测试 HTTPS 访问
现在你可以通过 https://mydomain.com 访问你的网站了。如果浏览器提示不受信任的证书,这正常,因为自签名证书未被官方信任的证书颁发机构 (CA) 签署。
访问后会发现地址栏出现红色提示地址不安全:

将证书导出到桌面

点击导出的文件,点击安装证书,把证书安装到受信任的根证书路径

通过这些步骤,你应该能够使你的 Web 服务器通过 HTTPS 提供一个安全受信的服务。


8738

被折叠的 条评论
为什么被折叠?



