目录
准备工作:安装 OpenSSL 工具
生成私钥和证书的命令流程
在开发服务器中配置证书
浏览器信任问题及解决方法
首页 运维 nginx 如何为开发环境创建自签名的SSL证书?

如何为开发环境创建自签名的SSL证书?

Jul 11, 2025 am 01:44 AM

在开发环境中使用自签SSL证书的关键步骤如下:1. 安装OpenSSL工具,可通过brew、apt或官方下载安装;2. 使用openssl命令生成私钥和证书文件,包含-x509、rsa:4096、-keyout、-out等参数配置;3. 在Node.js、Nginx或Apache中分别配置证书路径及服务监听;4. 解决浏览器信任问题,通过钥匙串访问或管理证书工具将证书加入受信任根证书颁发机构。整个过程旨在创建本地HTTPS测试环境并避免安全警告,同时确保开发效率。

How to create a self-signed SSL certificate for a development environment?

在开发环境中使用自签 SSL 证书,主要是为了模拟 HTTPS 的运行环境,同时避免浏览器的安全警告。虽然它没有经过权威机构认证,但在本地测试中非常实用。下面是一些关键步骤和注意事项。

准备工作:安装 OpenSSL 工具

大多数系统默认已经安装了 OpenSSL,但最好先确认一下。打开终端输入:

openssl version

如果没有显示版本号,可以按照以下方式安装:

  • macOS(使用 Homebrew):

    brew install openssl
  • Ubuntu/Debian

    sudo apt update && sudo apt install openssl
  • Windows:可以下载并安装 OpenSSL 官方提供的版本 或通过 WSL 使用 Linux 版本。

安装完成后,就可以开始生成证书了。

生成私钥和证书的命令流程

你可以用一条命令快速生成一个包含私钥和证书的 PEM 文件:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes

这条命令的意思是:

  • -x509:表示这是一个自签名证书
  • -newkey rsa:4096:生成一个 4096 位的 RSA 私钥
  • -keyout key.pem:将私钥保存为 key.pem
  • -out cert.pem:将证书保存为 cert.pem
  • -sha256:使用 SHA-256 算法签名
  • -days 365:证书有效期为一年
  • -nodes:不加密私钥(方便开发时使用)

执行后会提示你填写一些信息,比如国家、组织名等,可以随便填或者留空(按回车跳过)。最后你会得到两个文件:key.pemcert.pem

在开发服务器中配置证书

不同的开发环境配置方式略有不同,以下是几个常见场景的参考:

  • Node.js Express 应用

    const fs = require('fs');
    const https = require('https');
    const express = require('express');
    
    const app = express();
    
    const options = {
      key: fs.readFileSync('key.pem'),
      cert: fs.readFileSync('cert.pem')
    };
    
    https.createServer(options, app).listen(443);
  • Nginx 配置

    server {
        listen 443 ssl;
        server_name localhost;
    
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    
        location / {
            proxy_pass http://localhost:3000;
        }
    }
  • Apache 配置: 启用 SSL 模块后,在虚拟主机配置中添加:

    <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile "/path/to/cert.pem"
        SSLCertificateKeyFile "/path/to/key.pem"
    </VirtualHost>

    别忘了重启服务或重新加载配置使更改生效。

    浏览器信任问题及解决方法

    由于是自签名证书,浏览器会显示“不安全”警告。你可以手动将其加入受信任的根证书来绕过这个问题。

    Chrome/Firefox(Mac)

    1. 打开钥匙串访问(Keychain Access)
    2. 选择“系统”钥匙串
    3. 点击“文件 > 添加证书”
    4. 选择你的 cert.pem 文件
    5. 双击新添加的证书,展开“信任”,选择始终信任

    Edge/Chrome(Windows)

    1. 打开“管理证书”(可以在运行中输入 certmgr.msc
    2. 在“受信任的根证书颁发机构”中导入你的证书
    3. 按照向导完成导入

    这样之后,访问本地 HTTPS 地址就不会再出现安全警告了。


    基本上就这些操作。虽然过程看起来有点多,但其实每一步都很直接。关键是记住生成证书时要加上 -nodes 参数,不然每次启动服务都得输密码,反而影响效率。

    以上是如何为开发环境创建自签名的SSL证书?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1591
276
如何阻止特定的用户代理? 如何阻止特定的用户代理? Jul 26, 2025 am 08:20 AM

要屏蔽特定的User-Agent,可在Nginx、Apache或代码(如PHP、Python)中实现。1.在Nginx中,通过if判断$http_user_agent并返回403;2.在Apache中,使用SetEnvIfNoCase和Deny拒绝访问;3.在程序中判断User-Agent并拦截请求。常见需屏蔽的UA包括python-requests、curl、空UA等,选择合适方式可有效减少垃圾流量和安全风险。

nginx流代理基础知识 nginx流代理基础知识 Jul 26, 2025 am 02:57 AM

NginxStream模块用于四层代理,1.TCP透传代理MySQL需配置listen和proxy_pass指向upstream;2.TLS直通不终止SSL,保持端到端加密;3.UDP代理加udp关键字适用于DNS等场景;4.常用选项包括proxy_timeout、so_keepalive和access_log;5.注意Stream必须位于顶层配置且与HTTP模块端口分离。

NGINX工作过程和连接 NGINX工作过程和连接 Jul 27, 2025 am 03:15 AM

设置worker_processes为auto(即CPU核心数)以充分利用多核性能;2.根据系统文件描述符限制和预期流量设置worker_connections(如1024或更高),确保ulimit-n足够大;3.最大并发连接数=worker_processes×worker_connections,合理配置可支持数千至数万连接,避免瓶颈,提升Nginx生产环境性能。

配置NGINX超时 配置NGINX超时 Aug 03, 2025 pm 04:25 PM

proxy_connect_timeout设为5–10秒,确保快速失败;2.proxy_send_timeout设为10–30秒,适应慢速上传;3.proxy_read_timeout匹配应用最长响应时间,避免504错误;4.若负载均衡,可设proxy_next_upstream_timeout限制重试时长——正确配置这些值能显着减少网关超时、提升用户体验,并需结合实际日志和监控持续调优。

Server_name指令做什么? Server_name指令做什么? Aug 02, 2025 pm 04:49 PM

Nginx中的server_name指令用于根据客户端发送的Host头选择处理请求的虚拟主机。具体来说:1.server_name通过精确匹配、通配符或正则表达式匹配Host头,决定使用哪个server块;2.未匹配时会回退到默认server块,通常是第一个或显式标记为default_server的块;3.正确配置server_name有助于避免内容重复、提升SEO并增强性能;4.复杂匹配和通配符应谨慎使用,以保持清晰性和效率。因此,合理设置server_name能确保流量正确路由并简化服务器维

如何在CentOS/RHEL上安装NGINX? 如何在CentOS/RHEL上安装NGINX? Jul 27, 2025 am 02:47 AM

在CentOS或RHEL上安装Nginx的步骤包括:1.更新系统并安装依赖;2.添加Nginx官方仓库;3.安装Nginx并设置开机启动;4.配置防火墙允许访问。首先运行sudoyumupdate更新系统,安装yum-utils和epel-release(适用于RHEL);接着创建/etc/yum.repos.d/nginx.repo文件并添加官方仓库地址,执行yummakecache生成缓存;然后通过sudoyuminstallnginx安装Nginx,并使用systemctlenable/s

Nginx URL重写和重定向 Nginx URL重写和重定向 Aug 01, 2025 am 03:48 AM

Redirects(301/302)changethebrowserURLandareSEO-friendlyformovedcontent;rewritesinternallymapURLswithoutbrowserredirection.2.Usereturn301forfast,clearredirectslikeforcingHTTPS,redirectingwww,ormovingoldpathstonewones.3.Userewritewithlastorbreakinlocat

nginx for node.js应用程序 nginx for node.js应用程序 Aug 01, 2025 am 04:13 AM

nginxactsasAsareVerseProxy,HidingInternalportsandalling MultiplipliplipsonOnserver; 2. Ithlesssl/tlstermination效果效率lyvialet'sencrypt,offloadingIncryption fromNode fromnode; 3.ITServestTicaticFilesFilesFilesFasticFasterFasterFasterThannAnnOdeByDirectLyectlyectlyectlyectlyectlyectlymanagingRouteSlike/static/Static/Static/Statatic/Static;

See all articles