HTTPS 证书配置

现在阿里云和腾讯云都支持申请 HTTPS 证书,这里不再提,有需要的可自行google解决方案。 本文主要介绍的是通过 letsencrypt 申请免费的HTTPS证书,并将其配置在IIS WEB服务器上。

0. 申请 HTTPS 证书

https://www.sslforfree.com/ 申请证书,这里我以 http://sparktodo.weihanli.xyz/ 为例申请设置

  1. 输入要使用HTTPS的证书地址,生成证书及验证文件

  2. 验证域名

    验证域名支持三种方式,FTP ,文件验证,DNS验证

    如果有FTP,推荐使用FTP验证,简单快捷;如果没有FTP推荐使用文件验证,如果端口号不是80端口请使用DNS验证方式。

    这里以 文件验证 为例验证域名,点击 “Manually Verify Domain”按钮获取验证文件,点击下面的链接下载文件

    在网站根目录下创建文件夹,并将验证文件放在里面

    windows 创建目录:

    mkdir .well-known\acme-challenge

    linux 创建目录:

    mkdir -p .well-known/acme-challenge

    如果你用的是IIS作为WebServer,那么还需要设置一下MIME类型,具体方法如下:

    点击下面的验证链接,如果没有错误就证明已经验证通过可以直接下载证书

    【asp.net core项目需要另外设置】 针对 asp.net core项目,我们需要将创建的文件放在 wwwroot 目录下,并且在程序中添加对没有扩展名的文件的支持, 添加对没有扩展名的文件的支持的代码如下:

    StartUp 中的 Configure 方法中配置

             app.UseStaticFiles(new StaticFileOptions()
    {
    ServeUnknownFileTypes = true
    });
  3. 下载

    验证通过之后下载我们的证书,下载之后会是一个包含三个文件的压缩包,三个文件中有两个crt和一个private key, 这可能并不是你想到的证书格式,那么你需要转换证书格式,如果你使用 IIS 作为WebServer,windows 不识别 private key,所以需要把证书合成一个 *.pfx 的证书

1. 证书格式转换

下载的证书可能并不是你需要的格式,建议下载 openssl 进行转换,如果是linux系统,那会比较容易直接从官网下载。

  1. 下载openssl

    如果是windows系统可能会有一些繁琐,官方不提供windows版的,从这里下载windows版openssl

    下载并安装好之后,建议配置系统环境以更方便的使用

  2. 转换证书格式

    • 转换为 *.pfx 格式

      openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx

      执行命令会提示你输入密码,输入之后会要求确认一下密码(无回显),密码在导入证书时会用到

    • 转换为 *.pem 格式

      openssl rsa -in private.key -text > private.pem

2. WEB服务器配置 HTTPS 证书

这里以 IIS 部署为例,更多web服务器配置HTTPS请参考证书配置(https://www#wosign#com/Docdownload/index.htm)[将#替换为.]

双击*.pfx证书文件即可导入证书,按提示导入证书即可,导入成功之后,配置IIS Web服务器:

配置 HTTP 自动转换为 HTTPS,可参考以下解决方案:

最好的解决方案是在代码里配置,如果是 HTTP 就重定向到 HTTPS

我的配置方式是这样的:

  1. 要求 SSL

  1. 自定义错误页面

3. Summary

生活处处是惊喜,转角遇到坑。

写这篇文章的时候,第一次配置主要是 openssl 的安装搞了好长时间,第二次配置比第一次顺利一些,但是也遇到了新的问题,第一次配置的是一个ASP.NET项目,第二次是一个ASP.NET Core项目,第二次文件验证不成功,后来修改了代码之后终于可以了,第二次还配置了强制HTTPS,第一次的项目配置的是前台功能允许使用HTTP,但是后台功能要求必须是HTTPS,第二次是全站HTTPS。

如果看完还有什么问题或者觉得文章有什么问题,欢迎指出,欢迎联系我 weihanli@outlook.com

生命不息,踩坑不止。

最新文章

  1. 常用js归纳
  2. 网络基础知识之 Ping
  3. jsp系统时间和时间对比(活动结束不结束)
  4. Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取
  5. 超简单的处理JSON格式和JSON数组格式的String
  6. Android Keycode详解
  7. windows下根据端口号杀死进程
  8. Changing Icon File Of Push Button At Runtime In Oracle Forms 6i
  9. 【虚拟化】支持IDE/SATA/SCSI
  10. 2016传统行业“互联网+”元年,你准备好了吗?
  11. group by order by having
  12. Sicily 1790. Single Round Match
  13. OSG显示文字——自定义显示文字函数
  14. 多维数据库 Oracle Essbase 和 IBM Cogons 底层原理
  15. mktime 夏令时
  16. [NOI2017]泳池——概率DP+线性递推
  17. C#-MVC开发微信应用(3)--文本消息和图文消息的应答
  18. ArcGIS API 和GIServer
  19. Java8函数接口实现回调及Groovy闭包的代码示例
  20. Ubuntu:火狐浏览器加速下载(Flashgot+Aria2+Uget)

热门文章

  1. oracle-sql入门练习及答案
  2. 【.net 深呼吸】在运行阶段修改应用配置文件
  3. TWS日志查看
  4. 【JAVASCRIPT】React学习-如何构建一个组件
  5. MySQL系列(三)---索引
  6. .NET MVC与三层架构
  7. WPF--TextBlock的ToolTip附加属性
  8. ps-ef|grep-vgrep|grepsep|awk'{print"kill-9"$2}'|sh 这个表达式到底是什么意思啊?
  9. Jersey实现Restful服务
  10. iOS设置状态栏样式