SSL证书在IIS上部署使用

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 该文介绍了如何在IIS上部署SSL证书以实现HTTPS访问。首先建议使用nginx,但若需使用IIS,需有SSL证书(fullchain.pem和privkey.pem)并熟悉IIS操作。文中提供了两种证书转换方法:已有openssl,使用命令`openssl pkcs12 -export`生成.pfx文件;无openssl,通过Python脚本(pyOpenSSL v23.2.0)转换。转换后的.pfx文件导入Windows,选择“本地用户”并输入密码。最后在IIS中绑定证书,测试https访问应能正常工作。

背景介绍

我的需求是在IIS上部署SSL证书,然后可以 https://example.com 正常访问

如果您不是迫不得已,建议使用nginx等web服务器已获得顺畅的https服务

nginx SSL 证书配置如下

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate         /etc/nginx/cert/fullchain.pem;
    ssl_certificate_key     /etc/nginx/cert/privkey.key;

环境介绍以及依赖版本介绍

你已经通过其他途径申请到了 example.com 的SSL证书,证书包含两个文件 fullchain.pem pem证书文件 privkey.pem pem私钥文件
windows服务器(我的是windows10),已经安装IIS
这里假设您已经熟练操作IIS

  • 选中IIS中的网站,在右侧Bindings...中添加 https://example.com , 然后在下面选中您导入的证书接口
  • 您导入的证书接口 此时还不可用,本文的目的就是导入证书,然后在IIS中的证书选择中可以选择到导入的证书。
    您已经在您的域名管理的DNS管理中正确添加了DNS解析记录

操作方法

方案1

如果您的电脑已经安装 openssl , 则直接转换证书即可

# 测试您的电脑是否安装openssl
openssl help

Standard commands
asn1parse         ca                ciphers           cms
crl               crl2pkcs7         dgst              dhparam
dsa               dsaparam          ec                ecparam
enc               engine            errstr            gendsa
genpkey           genrsa            help              list
nseq              ocsp              passwd            pkcs12
pkcs7             pkcs8             pkey              pkeyparam
pkeyutl           prime             rand              rehash
req               rsa               rsautl            s_client
s_server          s_time            sess_id           smime
speed             spkac             srp               storeutl
ts                verify            version           x509

# 直接转换证书

openssl pkcs12 -export -out example.com.pfx -inkey privkey.pem -in fullchain.pem

# 需要输入密码 xxxxxx

文件 example.com.pfx 即使转换的 windowws 的证书,可以导入IIS中

方案2

如果您的电脑未安装openssl,则可以使用python代码进行证书转换

代码如下


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024-03-25 15:26
# @Author  : Jack
# @File    : 02.convert_ssl_pfx

"""
02.convert_ssl_pfx
pip install pyOpenSSL==23.2.0
"""
from OpenSSL import crypto


def main(full_chain_path, key_path, password, pfx_result):
    with open(full_chain_path, 'rb') as f:
        full_chain_data = f.read()
    with open(key_path, 'rb') as f:
        key_data = f.read()

    cert = crypto.load_certificate(crypto.FILETYPE_PEM, full_chain_data)
    key = crypto.load_privatekey(crypto.FILETYPE_PEM, key_data)

    pkcs12 = crypto.PKCS12()
    if cert and key:
        pkcs12.set_certificate(cert)
        pkcs12.set_privatekey(key)
        with open(pfx_result, 'wb') as f:
            f.write(pkcs12.export(passphrase=password))


if __name__ == '__main__':
    main(r'fullchain.pem', r'privkey.pem',
         b'xxxxxx', r'result.pfx')

特别注意事项

pyOpenSSL==23.2.0 , 23.2.0之后的版本已经移除 PKCS12
Removed OpenSSL.crypto.loads_pkcs7 and OpenSSL.crypto.loads_pkcs12 which had been deprecated for 3 years.
参见

导入证书,使IIS可以选择使用

把生成的 example.com.pfxresult.pfx 复制到windows机器上, 双击文件,选择本地用户,下一步,下一步,下一步...看到导入成功提示即可。
本地用户 选择外, 其他选项默认即可,需要密码的话,请输入上面配置的密码xxxxxx

此时在进入IIS中选择证书的话,您就可以选择到您自己的证书了

测试

浏览您的网站 https://example.com 发现可以正常访问。

目录
相关文章
|
29天前
|
缓存 安全 算法
SSL和TLS部署实践
在TLS中,所有安全性都以服务器的加密身份开始,这就需要一个强大的私钥来防止攻击者进行模拟攻击。同样重要的是拥有一个有效和强大的证书,它会授予私钥来代表一个特定的主机名。
41 2
|
2月前
|
网络安全 Docker CDN
使用Certimate自动申请与部署SSL证书
Certimate 是一个开源的 SSL 证书管理工具,可帮助自动申请、部署 SSL 证书并自动续期。
262 0
使用Certimate自动申请与部署SSL证书
|
1月前
|
存储 安全 算法
SSL和TLS部署实践
【10月更文挑战第28天】在TLS中,服务器的加密身份和强大私钥是安全基础,2048位RSA密钥足以满足大多数需求。保护私钥需在可信环境生成、加密存储、使用HSM、及时撤销旧证书、每年更新证书。确保证书覆盖所有域名,选择可靠CA,使用SHA256签名算法,配置完整证书链,禁用不安全加密套件,启用前向保密,使用会话重用机制,启用OCSP Stapling,加密整个网站,删除混合内容,安全设置Cookie,配置HSTS和CSP。
118 1
|
2月前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
90 1
|
6月前
|
人工智能 网络安全 开发工具
视觉智能开放平台操作报错合集之服务部署在pdd的服务器,调用报错:The SSL connection could not be established,该如何解决
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
139 0
|
2月前
|
安全 Java 测试技术
ToB项目身份认证AD集成(二):快速搞定window server 2003部署AD域服务并支持ssl
本文详细介绍了如何搭建本地AD域控测试环境,包括安装AD域服务、测试LDAP接口及配置LDAPS的过程。通过运行自签名证书生成脚本和手动部署证书,实现安全的SSL连接,适用于ToB项目的身份认证集成。文中还提供了相关系列文章链接,便于读者深入了解AD和LDAP的基础知识。
|
3月前
|
安全 应用服务中间件 网络安全
部署SSL证书
部署SSL证书
238 5
|
4月前
|
C++
【Azure云服务 Cloud Service】如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR)
【Azure云服务 Cloud Service】如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR)
|
4月前
|
负载均衡 前端开发 应用服务中间件
使用Nginx配置SSL以及部署前端项目
本文介绍了如何使用Nginx配置SSL证书以启用HTTPS,并展示了如何通过Nginx部署前端项目,包括配置SSL证书、设置代理和负载均衡的示例。
122 2
|
4月前
|
开发框架 .NET API
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
198 3