Windows、macOS和Linux平台设置HTTPS以及自签名证书详细指南

本文讲的是Windows、macOS和Linux平台设置HTTPS以及自签名证书详细指南

在本文中,我会向大家介绍如何在Windows、macOS和Ubuntu Linux上设置使用HTTPS与ASP.NET Core的本地开发环境,另外,我还将介绍如何创建自签名证书并将其添加到受信任的根证书存储区,以消除烦人的浏览器提示消息。最后,我将介绍如何设置用于ASP.NET Core的内置Web服务器的Kestrel来使用HTTPS。

创建自签名证书,设置信任项,就可以避免烦人的浏览器提示,记录了自签名证书的整个过程。在Windows和Linux上安装证书完全是两个不同的进程,但在ASP.NET Core环境中,跨平台开发是开发过程不可或缺的一部分,这一点至关重要。然后,Chrome中的一些通知消息,比如 “你的连接不安全”,有关通用名称匹配的Chrome消息以及关于在ASP.NET Core和Kestrel中配置HTTPS的具体信息。

所以我认为创建一个自签名证书详细指南,涵盖Windows和Linux的详细信息将是一个好主意。

为什么选择HTTPS?

众所周知,互联网正在快速向着HTTPS时代前进。目前,HTTPS已经普遍存在了。你每天使用的大部分网站(如Google、Facebook、Microsoft、银行网站)都在使用HTTPS。

如果你在过去2—3年内开发过应用程序,那么你的Web应用程序的生产版本很有可能以HTTPS方式运行。展望未来,绝大多数网站将使用HTTPS。

互联网上将有超过50%的网页浏览量在使用HTTPS,Google Chrome的最终目标是将所有HTTP网站标记为不安全,所有通过HTTPS的通信都是加密的。这意味着没有人可以窥探你的信息。

为什么需要本地开发的自签名证书?

每次访问HTTPS站点时,你的浏览器都会下载站点的证书,其中包含使用该证书颁发机构(CA)的私钥签名的站点托管的服务器的公钥。

你的操作系统会附带预先安装的受信任的根CA列表,浏览器使用这些根CA列表来验证证书,这是通过验证你的浏览器从站点下载的证书中的公钥是否由发出该证书的CA进行签名来完成的。

证书还包含服务器的域名,并被浏览器用来确认它所连接的站点与由CA颁发的证书中列出的站点相同。之后,进行加密。 

由于我们不使用CA颁发的本地开发证书,因此我们可以发出自签名证书,然后将此自签名证书添加到我们受信任的根证书颁发机构存储区。这样,你的浏览器将信任证书。

自签证书的安全性如何?

自签名证书通过HTTPS提供加密通信,就像证书颁发机构(CA)颁发的证书一样,至少连接一次。但这本身并不能使自签证书安全,例如,如果没有正确的安装和信任,自签名证书就容易受到中间攻击者的威胁。由于信任自签名证书的唯一方法是在受信任的根CA存储区中为访问该站点的每个设备手动导入证书,自签名证书默认情况下实际上是不安全的。

在本地主机上,由于没有与公共网站相同的安全要求。因此,使用自签名证书进行本地开发是为了能够使用HTTPS在本地开发。创建一个自签名证书,并在Windows上信任它,在Windows中使用ASP.NET Core创建自签名证书在Powershell中非常简单,我写了一个Powershell脚本来处理。

只需用管理员权限打开Powershell,在脚本中设置证书的密码,然后运行脚本。

创建一个自签名证书,并在macOS上信任它

为你的证书创建配置文件:

将内容粘贴到conf文件中并保存文件:

确保OpenSSL库安装在macOS上,运行以下命令检查OpenSSL是否已安装:

如果未安装OpenSSL,请使用brew安装OpenSSL:

使用OpenSSL运行以下2个命令,使用OpenSSL在macOS中创建自签名证书:

相信macOS上的自签名证书真的很简单,打开KeyChain Access应用程序(利用KeyChain的Spotlight搜索找到它)。

在“钥匙串”显示窗中选择“系统”,然后将.pfx证书拖到证书列表窗口中。

要信任你的自签名证书,请双击你的证书,并在信任部分下选择始终信任。

创建一个自签名证书并在Ubuntu Linux上信任它

在Ubuntu Linux中创建自签名证书更简单。所需要的是生成自签名证书的两个简单命令,以及将证书复制到可信存储的单个命令。

为你的证书创建配置文件:

使用openssl运行以下2个命令,以在Ubuntu Linux中创建自签名证书:

然后,运行以下certutil命令将证书添加到受信任的CA根存储区:

要确认或列出使用certutil安装的受信任证书,请运行以下命令:

要从受信任的CA根存储库中删除证书,请运行以下命令:

在ASP.NET核心中配置HTTPS

一旦你创建了一个自签名证书,并在Linux或Windows上的根CA存储中信任证书,则将ASP.NET Core配置为和HTTPS一样的过程。

首先将先前在Windows或Linux中创建的.pfx证书复制到项目目录的根目录。

然后,创建一个包含证书文件名和密码的certificate.json配置文件。我喜欢将它保存在一个单独的文件中,因为这样会使事情变得有步骤达到简化的目的。 ASP.NET Core 2允许你在appsettings.json中配置Kestrel和HTTPS,但由于配置非常复杂,我更喜欢这种更简单配置的方法。

特别重要的是要明确地设置防伪令牌cookie以使用安全的cookie。

完成更改后,只需构建并运行该项目,你就可以看到Chrome在没有任何警告信息的情况下运行,并将你的网站显示为安全的。

原文发布时间为:2017年8月29日

本文作者:xiaohui 

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-12-02 13:51:14

Windows、macOS和Linux平台设置HTTPS以及自签名证书详细指南的相关文章

有效的在Windows和UNIX/Linux平台上完全卸载DB2

有效的在Windows和UNIX/Linux平台上完全卸载DB2 作者:吴伟龙  Name:Prudence Woo QQ:286507175  msn:happy-wuweilong@hotmail.com       Windows 平台      从 Windows 操作系统中彻底除去 DB2产品时需要执行的步骤.仅当不再需要现有 DB2 实例和数据库时,才应执行此任务.        如果正在卸载 DB2 的缺省副本,并且您有其他的DB2 副本在系统上,则应使用db2swtch命令以在继

Windows server 2008 IIS7.5设置https成功了,经验分享及常见问题解决方法!

前言: 很久前就有网站(http://www.w-nn.cn)转换HTTPS(https://www.w-nn.cn)的想法了,因为网站在运营中,没有确切得把握,真的不敢乱动!所以,一直搁浅到今天! 是阿里云免费服务器给了我转换得勇气和动力! 不经意间发现阿里云居然有送半年得活动,企业认证后新购服务器价格更是低的要命,直接买了3年!(活动地址:https://www.aliyun.com/activity?spm=5176.7114037.416540.2.PnsGZI#/promotionAr

Mirai物联网僵尸攻击竟然可以在Linux平台和Windows平台之间交叉传播

本文讲的是Mirai物联网僵尸攻击竟然可以在Linux平台和Windows平台之间交叉传播, 近日,卡巴斯基实验室通过监测,发现一个全新的物联网木马正在通过Windows设备传播.最早卡巴斯基实验室的安全研究人员观察到这个推送Mirai下载器的扩展器变体是在2017年1月,但其实这个Windows木马以前就有了,只不过通过Windows进行传播的途径也非常有限.不过,如果Mirai木马强制性的远程实施Telnet命令连接,就会从Windows主机传播到Linux主机,尽管这个传播方法目前还没有经

Windows 和 Linux 平台下的端口转发工具

原文地址: http://unmi.cc/windows-linux-port-forwarding/ 这里记录一下我曾经使用过的几个端口转发工具,即端口映射.端口重定向,和 NAT 也是差不多的概念. Linux 下用过 iptables,rinetd:Windows 下用过某个防火墙的 NAT 功能.RemoteAnywhere 的端口重定向.FPipe,还有最近刚找到的 PassPort.试着去设置一下 Windows 2000 的 NAT  功能,但未成功,还是特定的软件简单易用,下面介

Windows及Linux平台下的计时函数总结

本文对Windows及Linux平台下常用的计时函数进行总结,包括精度为秒.毫秒.微秒三种精度的各种函数. 比如Window平台下特有的Windows API函数GetTickCount().timeGetTime().及QueryPerformanceCounter(), Linux平台下特有的gettimeofday()函数,以及标准的C/C++函数time()和clock().下面分别对此进行简单介绍并附上示例代码. 通用的C/C++计时函数time()和clock() time_t ti

ssh整合-SSH框架整合 Linux平台转移到windows平台

问题描述 SSH框架整合 Linux平台转移到windows平台 在做SSH框架整合时,所有的包都导入了并且运行正常,但不知道为什移到windows上就报错 : Cannot find class [com.mchange.v2.c3p0.CombopooledDataSource] for bean with name 'dataSource' defined in class path resource [applicationContext-ds.xml]; 注:这个项目是在老师的wind

Linux平台PHP5.4设置FPM线程数量的方法_php技巧

本文实例讲述了Linux平台PHP5.4设置FPM线程数量的方法.分享给大家供大家参考,具体如下: PHP5.4安装完毕后,FPM的默认配置文件位于/usr/local/php/etc/php-fpm.conf.default >cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf >vim /usr/local/php/etc/php-fpm.conf 输入"/www",搜索w

直接复制数据文件实现linux平台数据库复制到windows平台数据库

一.1  平台环境概述   之前在测试传输表空间时感受了一下跨平台的移值,当时只测试了通过传输表空间的特性复制某个指定表空间,或者是通过RMAN中的CONVERT或TTS复制数据库,测试结束之后,感觉ORACLE10G之后对不同平台(相同字节顺序)的数据文件相互兼容性方面得到大大提升,下意识认为不通过传输表空间直接复制数据文件应该也可以,今天在本地测试了一下,确实相当好使,通过这种方式使得跨平台的移植更加高效,也易于管理和操作,下面记录的为操作过程. 注意:源平台与目标平台的字节顺序(endia

Oracle DG Linux平台逻辑Standby的创建实例

oracle,平台,linux,数据库,archive,sql 操作系统:linux redhat 4.7 Oracle: 10.2.0.1 主库:orcl_pd 备库:LGDG 一.逻辑Standby创建过程 1.创建物理Standby 具体的参考: Oracle Data Guard Linux 平台 Physical Standby 搭建实例 简单的做如下几点提示: (1)初始化参数配置 初始化参数的修改并不仅仅只是在待创建的Standby数据库端创建,当前的Primary数据库甚至同一个