成为您自己的证书颁发机构(CA),并为您的本地开发环境颁发证书,并使HTTPS在Windows 10中正常工作。
我在Windows 10本地计算机上开发了许多电子商务和会员项目,需要测试网站的安全区域,例如结帐,付款表格和注册。
这些类型的表格均要求使用HTTPS通过SSL证书对数据进行加密。
但是,如何在Windows 10中使HTTPS正常运行呢?程序是什么?
这是我在Windows上颁发证书的分步指南,以便您可以在HTTPS中运行本地开发站点。
安装OpenSSL
您首先需要的是OpenSSL的可执行文件。
该可执行文件未分发到Windows安装文件中,因此您必须手动查找并安装它。
有几个有用的资源可以从以下位置获取文件:
选项1 –闪亮的灯光作品
访问https://slproweb.com/products/Win32OpenSSL.html并下载“ Win64 OpenSSL v1.1.0j”文件并运行安装程序。
确保为OpenSSL选择的安装文件夹的“ \ bin \”文件夹已添加到系统PATH环境变量中,以便可以在任何地方使用它。
选项2 – Windows版Git
OpenSSL可执行文件随Git for Windows一起分发。
安装完成后,您将在“ \ Git \ mingw64 \ bin”中找到openssl.exe文件,如果尚未完成,则可以将其添加到系统PATH环境变量中。
成为Windows 10中自己的证书颁发机构的三个步骤
在这些步骤中,您将创建一个根SSL证书,您可以根据需要使用它来对尽可能多的本地开发站点进行签名。
您只需要做一次第一部分。
将根SSL添加到Windows 10后,您可以跳到为所有新的本地域颁发证书。
第1步-创建私钥
我们将创建一个名为rootSSL.key的私钥,该私钥将用于颁发新的站点证书。
我使用Nginx Web服务器,因此我在Nginx Windows文件夹中创建了一个名为“ SSL”的文件夹,这就是我要创建此根密钥的地方。
在管理员模式下打开命令提示符,然后导航到nginx安装文件夹中的新创建的SSL文件夹。
输入以下命令,然后输入私钥的密码。
openssl genrsa -des3 -out rootSSL.key 2048
证书颁发机构步骤1
步骤2 –创建证书文件
在此步骤中,我们将根据在上一步中创建的私钥创建一个名为rootSSL.pem的证书文件。
注意:您可以选择创建一个持续X天数的证书文件。在此示例中,我们将选择1024天,但是您可以选择任意数量-越长越好。
输入以下命令:
openssl req -x509 -new -nodes -key rootSSL.key -sha256 -days 1024 -out rootSSL.pem
输入我们在步骤1中创建的根SSL密钥的密码。
然后,输入要插入SSL证书的信息:
两个字母的国家/地区代码:我在澳大利亚使用“ AU”。
您所在的州或省:我在新南威尔士州使用“ NSW”。
您的城市:我使用“悉尼”。
组织名称:我使用“零点开发”。
组织单位名称:我使用“开发”。
通用名称,例如服务器名称或完全限定的。域名(FQDN):我使用“ zeropointdevelopment.com”。
管理员电子邮件地址:我使用“ hello@zeropointdevelopment.com”。
证书颁发机构步骤2
您不必在这里输入合法信息,因为我们仅在本地开发环境上运行SSL证书,但是我喜欢正确地做到这一点。
步骤3 –让Windows信任证书颁发机构(CA)
我们将使用Microsoft管理控制台(MMC)信任根SSL证书。
步骤1 –按Windows键+ R
步骤2 –输入“ MMC”,然后单击“确定”
运行MMC
步骤3 –转到“文件>添加/删除管理单元”
添加删除管理单元
步骤4 –单击“证书”和“添加”
证书添加
步骤5 –选择“计算机帐户”,然后单击“下一步”
电脑帐号
步骤6 –选择“本地计算机”,然后单击“完成”
本地计算机然后完成
步骤7 –单击“确定”返回到MMC窗口
步骤8 –双击“证书(本地计算机)”以展开视图
MMC展开
步骤9 –选择“受信任的根证书颁发机构”,右键单击“证书”,然后选择“所有任务”,然后选择“导入”
受信任的根CA
步骤10 –单击“下一步”,然后浏览并找到我们在步骤2中创建的“ rootSSL.pem”文件
文件导入向导
导入向导查找文件
步骤11 –选择“将所有证书放置在以下存储中”,然后选择“受信任的根证书颁发机构存储”。单击“下一步”,然后单击“完成”以完成向导。
证书存储
浏览证书以在列表中查看您的证书。
现在,您可以开始为所有本地域颁发SSL证书。
颁发本地域证书
创建本地域站点
我不会在Nginx或您使用的任何Web服务器中设置实际站点。
第一步将是创建本地域。
您可以在c:\ program files \ windows \ system32 \ drivers \ etc \ hosts文件中执行此操作。
这是一个示例主机文件。
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1
localhost 127.0.0.1 client-1.local
您可以看到我添加了一个“ client-1.local”域来指向我的本地IP地址127.0.0.1
因此,“ client-1.local”是新的网站地址,我想在本地计算机上使用“ https://client-1.local”连接到该地址。
让我们为这个新的本地域颁发证书。
为新域创建私钥
我们将创建一个名为“ client-1.local.key”的文件,其中包含该域的私钥信息。
在同一管理员命令窗口中,键入以下内容:
openssl req -new -sha256 -nodes -out client-1.local.csr -newkey rsa:2048 -keyout client-1.local.key -subj "/C=AU/ST=NSW/L=Sydney/O=Client One/OU=Dev/CN=client-1.local/emailAddress=hello@client-1.local"
生成本地域的私钥
当您为自己的本地域颁发证书时,请用本地服务器域名替换“ client-1.local”。
您还可以更改“ -subj”参数以反映您的国家/地区,州/地区等。
使用根SSL证书颁发新证书
在同一管理员命令窗口中,键入以下内容:
openssl x509 -req -in client-1.local.csr -CA rootSSL.pem -CAkey rootSSL.key -CAcreateserial -out client-1.local.crt -days 500 -sha256 -extensions "authorityKeyIdentifier=keyid,issuer\n basicConstraints=CA:FALSE\n keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\n subjectAltName=DNS:client-1.local"
当您为自己的本地域颁发证书时,请用本地服务器域名替换“ client-1.local”。
出现提示时,输入根SSL证书的密码。
最后一步-颁发证书
您可以看到我们创建的所有文件。“ client-1.local.crt”和“ client-1.local.key”是您需要添加到本地开发站点的Web服务器配置中的文件。
在您的Web服务器中使用新的本地域证书
此过程的最后一部分是将证书文件添加到Web服务器的client-1.local的网站配置中。
Nginx
这是在nginx服务器块中使用密钥的示例。
找到您的nginx.conf文件,并在定义本地开发站点的服务器块内,添加如下所示的新行:
server {
listen 80;
server_name client-1.local;
# New Lines below
listen 443 ssl;
ssl on;
ssl_certificate f:/LDE/nginx/SSL/client-1.local.crt;
ssl_certificate_key f:/LDE/nginx/SSL/client-1.local.key;
Apache
如果使用单个实例,请找到Apache httpd.cof或apache24.conf配置文件。
典型的Windows安装将在c:\ program files \ apache24 \ conf中
如果您正在开发客户端站点,则更有可能为每个客户端设置虚拟服务器。
在这种情况下,请在apache安装路径中查找您的httpd-vhosts.conf配置文件。
在VirtualHost块内,在ServerName参数下直接对SSL行进行关联。
<VirtualHost client-1.local>
DocumentRoot f:/projects/client-1/www/
ServerName client-1.local
SSLEngine on
SSLCertificateFile f:/LDE/nginx/SSL/client-1.local.crt
SSLCertificateKeyFile f:/LDE/nginx/SSL/client-1.local.key;
</VirtualHost>
重新启动Web服务器
重新启动Windows Web服务器服务以加载新配置,并在您喜欢的浏览器上访问https://client1.local。