内网创建https网站的SSL证书、代码签名证书

本文重点讲解使用同一根证书,分别制作网站https的SSL证书、VSTO的代码签名证书,制作环境为安装了vs 2022的windows10、安装了openssl的centos7。

一、制作自签名的根证书

在windows10的环境下,在vs 2022 IDE中选择“工具-命令行-开发者Powershell”,进入命令行界面。

makecert -r -pe -n "CN=根证书名称" -b 08/08/2021 -e 08/08/2028 -sv ca.pvk ca.cer

弹出设置私钥保护口令提示框,选择None。

当前目录下生成的ca.cer即为自签名的根证书(含公钥),ca.pvk为根证书的私钥。

二、制作https网站的SSL子证书

在Centos的环境下,新建目录,将刚刚制作的自签名根证书ca.pvk和ca.cer两个文件拷入,按以下步骤,生成ssl的子证书。

1.生成网站服务器的私钥

openssl genrsa -out server.key 2048

2.修改openssl.cnf 配置文件

将openssl编译目录下apps目录中的openssl.cnf拷贝至当前目录,按以下要求修改配置。

#根据实际情况修改,将match改成optional,否则ca.cer必须与server.csr中的各个字段值一致才能签署
[ policy_match ]
countryName             = optional
stateOrProvinceName     = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
# 确保req下存在以下2行(默认第一行是有的,第2行被注释了)
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
# 确保req_distinguished_name下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉
[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = XX
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
localityName                    = Locality Name (eg, city)
localityName_default            = Default City
organizationName                = Organization Name (eg, company)
organizationName_default        = Default Company Ltd
organizationalUnitName          = Organizational Unit Name (eg, section)
commonName                      = Common Name (eg, your name or your server\'s hostname)
commonName_max                  = 64
emailAddress                    = Email Address
emailAddress_max                = 64
#添加一行subjectAltName=@alt_names
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=@alt_names
#新增alt_names,注意括号前后的空格,DNS.x 的数量可以自己加
#如果没有IP这一项,浏览器使用IP访问时验证无法通过
[ alt_names ]
IP.1 = 192.168.50.115
DNS.1 = dfe.leida.org
DNS.2 = ex.abcexpale.net

3.创建需要的文件夹及文件

 mkdir -p demoCA/newcerts
 touch ./demoCA/index.txt ./demoCA/serial
 echo "01">> ./demoCA/serial

4.生成网站服务器的签署申请文件

openssl req -new -out server.csr -key server.key -config openssl.cnf

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.pvk -extensions v3_req -config openssl.cnf

当前目录下生成的server.crt即为https网站服务器的ssl证书,server.key为该服务器的私钥。

5.修改nginx的配置文件

对/etc/nginx/conf.d/default.conf 文件添加如下代码,其中注意修改crt、key文件位置等关键项。

server {
	listen	443 ssl;
	server_name	www.test.com;
	
	ssl_certificate	/usr/local/nginx/conf/server.crt;
	ssl_certificate_key	/usr/local/nginx/conf/server.key;
	ssl_session_timeout	5m;
	location / {
		root     /usr/share/nginx/html;
        index    index.html index.htm;

	}
    }

重启nginx服务或服务器后,https网站将自动运行。

三、制作VSTO代码签名证书

在windows10的环境下,在vs 2022 IDE中选择“工具-命令行-开发者Powershell”,进入命令行界面。

1.生成子证书

makecert -pe -n "CN=代码签名证书名称" -b 08/08/2021 -e 08/08/2028 -iv ca.pvk -ic ca.cer -sv child.pvk child.cer

2.生成pfx证书文件

pvk2pfx -pvk child.pvk -spc child.cer -pfx child.pfx

四、安装根证书和代码签名证书

建立文件夹,将ca.cer、child.cer两个证书拷入,建立安装批处理文件cert.bat。运行VS 2022的计算机、浏览https网站和运行vsto的计算机,都要安装这两个证书。

CertMgr /add ca.cer /s /r localMachine root
certMgr /add child.cer /s /r localMachine trustedpublisher

1.windows7环境下,双击cert.bat批处理文件,直接安装两个证书。

2.windows10环境下,cert.bat批处理命令无效,应逐个安装证书,ca.cer安装到“受信任的根证书颁发机构”,child.cer安装到“受信任的发布者”。

五、VSTO使用代码签名证书

VS 2022中,在项目上,点击右键,选择“属性”,在项目属性界面,选择“签名”中的“从文件选择”,选择提前编译好的证书文件,本例为“child.pfx”,点击“打开”后显示“child.pfx”证书的相关内容。

你可能感兴趣的:(离线linux,VSTO,网站开发,https,ssl,http)