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

内网创建https网站的SSL证书、代码签名证书,第1张

本文重点讲解使用同一根证书,分别制作网站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

d出设置私钥保护口令提示框,选择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文件位置等关键项。


vim /etc/nginx/conf.d/default.conf

首先,对原listen 80代码段,修改为linsten 443 ssl的相应代码,添加相关内容。


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;

    #请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。


ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }

然后,建立新的listen 80代码段,将http的请求转移到https上。


 

server {
        listen  80;
        server_name     www.test.com;
        return 301 https://$host$request_uri;

}

重启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”证书的相关内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/577580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存