.net core 3.0 网站发布到centos后,绑定ssl证书,一个服务器绑一个证书,一个服务器绑多个证书

开始之前:对于windows服务器不存在这个问题,在iis中绑定证书是非常简单的一件事,不是本篇博客讨论的范围,绑定多个证书一样

3.0中指定url的方式可以通过在配置文件中加urls:"http://*:5000"这种方式来指定

发布到centos的.net core网站我是用 Kestrel托管的。这里也只针对这一种情况进行描述

1,在program.cs中CreateHostBuilder 替换成如下内容:

 public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseKestrel((context, options) =>
{
options.Configure(context.Configuration.GetSection("Kestrel"));
});
});

这段代码描述的是Kestrel服务的option从配置文件中读取 

紧接着在startup中增加 app.UseHttpsRedirection(); app.UseHsts();//默认是开启的,如果是,就不用管它

2,在配置文件appsettings.json中增加,这是单独的配置节点 ,其中path,是pfx文件的位置,password是证书的密码,在阿里云申请的证书,下载iis版的就有这两

  "Kestrel": {
"Limits": {
"MaxRequestBodySize": ,
"MaxRequestBufferSize": ,
"MaxRequestLineSize":
},
"Endpoints": {
"Https": {
"Url": "https://*:443",
"Certificate": {
"Path": "/home/cert/www.xxxx.pfx",
"Password": "xxx"
}
}
}
}

这里的配置项可以参考微软的文档,基本上大多数需要代码显式指定的配置在appsettings.json中都是可以直接配置的

参考文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#endpoint-configuration

如果一台服务器里边只有一个需要ssl证书的网站,那么到这里,问题就解决了。

很不幸,我的目标是在一台服务器里边使用两个ssl证书,分别对两个网站做ssl传输加密,在查过微软的部分文档后,没有找到相关的解决方案,反而是找到了nginx。在linux用nginx可以解决一台服务器绑定两个ssl的问题

首先是安装:yum install nginx,一路y,安装完毕后,nginx的主配置文件是   /etc/nginx/nginx.conf 直接修改这个文件,分别对N个需要ssl的站点进行配置,如下,监听端口都是443,区别是server_name ,根据需要配置的域名,分别写对应的server_name,

加粗部分是需要特别关注的,pem,和key这两 如果是在阿里云申请的ssl,下载的时候选择 nginx版的,就包含下边需要的两文件,可以放到任意位置,这里填写的是这两文件的路径,location里边的内容是转发的本地端口对应的就是域名对应的子网站。子网站必须是发布了的,可访问的站点,另外需要特别注意一下子网站不需要任何证书,只需要可以访问即可

server {
listen ;
server_name serverName1.com;
ssl on;
root '/';
ssl_certificate 'xxxx.pem';
ssl_certificate_key 'xxxx.key';
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:5000;
}
error_page 404 /404.html;
location = /40x.html {
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen ;
server_name serverName2.com;
ssl on;
root '/';
ssl_certificate 'xxxx.pem';
ssl_certificate_key 'xxxx.key';
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:5001;
}
error_page 404 /404.html;
location = /40x.html {
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

然后启动nginx服务  systemctl restart nginx.service .如果配置文件写的有问题,服务会启动失败,错误日志位置在nginx.conf中可以找到

服务启动完毕后,就可以看到效果了

NET Core Kestrel部署HTTPS 一个服务器绑一个证书 一个服务器绑多个证书的更多相关文章

  1. NET Core Kestrel部署HTTPS

    NET Core Kestrel部署HTTPS ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET ...

  2. ASP.NET Core Kestrel部署HTTPS

    ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET Core 部署HTTPS,直接通过配置Kestr ...

  3. NET Core Kestrel部署HTTPS使用SSL证书

    ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET Core 部署HTTPS,直接通过配置Kestr ...

  4. 部署asp.net core Kestrel 支持https 使用openssl自签ssl证书

    通过openssl生成证书 openssl req -newkey rsa:2048 -nodes -keyout my.key -x509 -days 365 -out my.cer openssl ...

  5. ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  6. ASP.NET Core 1.0 部署 HTTPS

    ASP.NET Core 1.0 部署 HTTPS ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1) 提示 更新时间:2016年01月23日. 在目前介 ...

  7. .NET 部署Https(SSL)通过代码方式

    在上一个文章中,传送门,给大家介绍了怎么在配置文件中使用 Kestrel 部署 Https,正好今天有小伙伴稳问到:可以通过代码的方式实现 Kestrel 的 Https 的部署吗?答案是肯定的,我们 ...

  8. 一次部署HTTPS的相关事件引发的思考

    前言: 上周五快要下班的时候,突然收到通知客户希望了解一下部署HTTPS的流程,这种事情谁听了都会有几分诧异的.因为这件事虽然和工作有一定的相关度,但平时不会走这个方向,实际上也较少接触.此外,客户手 ...

  9. 结合Jexus + Kestrel 部署 asp.net core 生产环境

    ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依赖. 获得下面三个方面的优势,你可以把它认为是一个C# 版本的NodeJS: ...

随机推荐

  1. Python break语句

    Python break语句:当运行到 break 语句时,终止包含 break 的循环语句. 注:无论判断条件是否达到 False 或 序列是否遍历完都会停止执行循环语句和该 break 下的所有语 ...

  2. pandas_处理异常值缺失值重复值数据差分

    # 处理异常值缺失值重复值数据差分 import pandas as pd import numpy as np import copy # 设置列对齐 pd.set_option("dis ...

  3. PHP image_type_to_extension - 获取图片后缀

    image_type_to_extension — 根据指定的图像类型返回对应的后缀名.高佣联盟 www.cgewang.com 语法 string image_type_to_extension ( ...

  4. 星屑幻想 optimal mark

    LINK :SP839 星屑幻想 取自 OJ 的名称 小事情...题目大意还是要说的这道题比较有意思,想了一段时间. 给你一张图 这张图给答案带来的贡献是每条边上两个点值得异或 一些点的值已经被确定 ...

  5. luogu P2973 [USACO10HOL]Driving Out the Piggies G 驱逐猪猡

    luogu LINK:驱逐猪猡 bzoj LINK:猪猪快跑 问题是在1时刻有个炸蛋在1号点 这个炸弹有p/q的概率爆炸 如果没有爆炸 那么会有1/di的概率选择一条边跳到另外一个点上重复这个过程. ...

  6. MySQL的undo/redo日志和binlog日志,以及2PC

    发现自己的知识点有点散,今天就把它们连接起来,好好总结一下. 一.undo log.redo log.binlog的定义和对比   定义和作用                       所在架构层级 ...

  7. linux下使用vscode和makefile搭建C++开发环境

    最近在linux上跑一些开源库做学习用, 顺手就搭了一下vscode的c++开发环境, 这里分享一下vscode进行C++开发的基本环境结构. 1. 首先是编辑器, vscode直接官网下载的, 后期 ...

  8. 痞子衡嵌入式:为下一代智能可穿戴设备而生 - i.MXRT500

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT500. 自2018年i.MXRTxxx系列首款芯片i.MXRT600(主打智能语 ...

  9. python 变量的命名规则和注意事项

    命名规则 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message 变量名不能包含空格,但可使用下划线 ...

  10. JQuery插件,轻量级表单模型验证(续 一)

    之前的代码结构,不方便扩展多结构的模型验证 重新结构设计了一下验证模型核心 var validateForm = (function(model) { model.Key = "[data- ...