Https配置自签名证书教程

简介:

通常我们在开发项目的过程中,一般都是使用的http来进行测试;但当部分项目上线或和其他第三方对接时,需要用到https协议时,此时可能就会有部分和http不同的请求方式,为此我们需要在开发或测试环境部署一个https的协议环境,也就是所谓的给ng加上ssl验证;配置自签名证书通常用于开发、测试或在小型内部网络中部署安全的 HTTPS 服务。以下是如何创建并配置自签名证书的步骤,以便在 Web 服务器(例如 Nginx、Apache)上使用。

1. 生成私钥 (Private Key)

首先,你需要生成一个私钥。这个私钥将用来签署你的自签名证书。

bash 复制代码
openssl genrsa -out mydomain.key 2048

这将生成一个 2048 位的 RSA 私钥,并将其保存到 mydomain.key文件中。

2. 生成证书签名请求 (CSR)

接下来,使用私钥生成一个证书签名请求 (CSR),其中包括有关你的组织和域名的信息。

bash 复制代码
openssl req -new -key mydomain.key -out mydomain.csr

执行上述命令后,系统会要求你输入以下信息:

  1. Country Name (2 letter code) XX: 国家代码,输入两位字母的国家代码。例如,中国是 CN。

  2. State or Province Name (full name) Some-State: 省或州的名称。例如,北京市,可以填 Beijing。

  3. Locality Name (eg, city) \[\]: 城市名称。例如,北京市,可以填 Beijing。

  4. Organization Name (eg, company) Internet Widgits Pty Ltd: 组织或公司的名称。例如,某某公司,可以填 Example Corp.

  5. Organizational Unit Name (eg, section) \[\]: 部门名称。例如,可以填 IT Department 或者留空。

  6. Common Name (e.g. server FQDN or YOUR name) \[\]: 服务器的完全限定域名 (FQDN)。这是非常重要的部分,填入你网站的域名,例如 www.example.com。

  7. Email Address \[\]: 联系的电子邮件地址。例如 admin@example.com。

  8. A challenge password \[\]: 挑战密码。一般情况下,可以留空,直接按回车键。

  9. An optional company name \[\]: 可选的公司名称。如果前面的"Organization Name"已经填写,这里可以留空。

示例填写

以下是一个示例的填写过程:

css 复制代码
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 []:

3. 创建自签名证书

现在可以使用私钥和 CSR 生成自签名证书

bash 复制代码
openssl x509 -req -days 365 -in mydomain.csr -signkey mydomain.key -out mydomain.crt

这个命令生成了一个有效期为 365 天的自签名证书,并将其保存到 mydomain.crt 文件中。

4. 配置 Web 服务器使用自签名证书

在 Nginx 中配置

打开 Nginx 配置文件(例如 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default)并添加或修改以下部分:

bash 复制代码
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即可。

在 Apache 中配置

打开 Apache 配置文件(例如 /etc/httpd/conf/httpd.conf 或 /etc/apache2/sites-available/000-default.conf),并添加或修改以下部分:

bash 复制代码
<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:

bash 复制代码
sudo systemctl restart nginx

对于 Apache:

bash 复制代码
sudo systemctl restart apache2

6. 测试 HTTPS 访问

现在你可以通过 https://mydomain.com 访问你的网站了。如果浏览器提示不受信任的证书,这正常,因为自签名证书未被官方信任的证书颁发机构 (CA) 签署。

通过这些步骤,你应该能够配置一个自签名证书,并使你的 Web 服务器通过 HTTPS 提供服务

相关推荐
TechWayfarer1 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
墨神谕7 小时前
RPC框架与HTTP REST的区别
网络协议·http·rpc
Tech探索者8 小时前
没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS
网络协议·tcp/ip·智能路由器
HY小宝F8 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
蜗牛互联网9 小时前
Java标准HTTP调用多模态模型的票据抽取前置校验
java·人工智能·python·http
福大大架构师每日一题12 小时前
mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升
网络协议·udp·webrtc
曹小强wxx13 小时前
Flutter 局域网设备发现:UDP 广播 + mDNS 双路合并,以及靠谱的在线判定与断线重连
物联网·网络协议·flutter
花间相见13 小时前
【计算基础|网络09】TCP(上):三次握手与四次挥手
网络·网络协议·tcp/ip
wdfk_prog13 小时前
LWIP教程 08:从 `tcp_write()` 到 ACK 清队列——TCP 数据发送、窗口与回调
网络·网络协议·tcp/ip
anew___13 小时前
《从零手写操作系统 (37):网络协议栈基础——Socket接口与TCP状态机》
网络·网络协议·tcp/ip