Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
SteamTools
提交
b1fd1725
S
SteamTools
项目概览
jobily
/
SteamTools
9 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SteamTools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b1fd1725
编写于
7月 26, 2023
作者:
R
RMBGAME
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
🚑
fix Proxy bugs
上级
318f9b33
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
109 addition
and
415 deletion
+109
-415
ref/WTTS.MicroServices.ClientSDK
ref/WTTS.MicroServices.ClientSDK
+1
-1
src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Extensions/ListenOptionsExtensions.cs
...erator.ReverseProxy/Extensions/ListenOptionsExtensions.cs
+1
-2
src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/Certificate/CertGenerator.cs
...roxy/Services.Implementation/Certificate/CertGenerator.cs
+93
-400
src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Certificates/CertService.cs
...ces.Implementation/HttpServer/Certificates/CertService.cs
+14
-12
未找到文件。
WTTS.MicroServices.ClientSDK
@
79f51348
比较
3141a33c
...
79f51348
Subproject commit
3141a33cec474a2e76f1a4d33c2a212766927669
Subproject commit
79f51348c80cd560dcca2022ade41bdc1cf53bbe
src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Extensions/ListenOptionsExtensions.cs
浏览文件 @
b1fd1725
...
@@ -45,10 +45,9 @@ static partial class ListenOptionsExtensions
...
@@ -45,10 +45,9 @@ static partial class ListenOptionsExtensions
{
{
OnConnection
=
ctx
=>
OnConnection
=
ctx
=>
{
{
var
domain
=
ctx
.
ClientHelloInfo
.
ServerName
;
var
o
=
new
SslServerAuthenticationOptions
var
o
=
new
SslServerAuthenticationOptions
{
{
ServerCertificate
=
certService
.
GetOrCreateServerCert
(
domain
),
ServerCertificate
=
certService
.
GetOrCreateServerCert
(
ctx
.
ClientHelloInfo
.
ServerName
),
};
};
return
ValueTask
.
FromResult
(
o
);
return
ValueTask
.
FromResult
(
o
);
},
},
...
...
src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/Certificate/CertGenerator.cs
浏览文件 @
b1fd1725
此差异已折叠。
点击以展开。
src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Certificates/CertService.cs
浏览文件 @
b1fd1725
// https://github.com/dotnetcore/FastGithub/blob/2.1.4/FastGithub.HttpServer/CertService.cs
// https://github.com/dotnetcore/FastGithub/blob/2.1.4/FastGithub.HttpServer/CertService.cs
// ReSharper disable once CheckNamespace
// ReSharper disable once CheckNamespace
using
BD.Common.Columns
;
namespace
BD.WTTS.Services.Implementation
;
namespace
BD.WTTS.Services.Implementation
;
/// <summary>
/// <summary>
...
@@ -11,6 +13,7 @@ sealed class CertService
...
@@ -11,6 +13,7 @@ sealed class CertService
readonly
IMemoryCache
serverCertCache
;
readonly
IMemoryCache
serverCertCache
;
readonly
ILogger
<
CertService
>
logger
;
readonly
ILogger
<
CertService
>
logger
;
readonly
IReverseProxyConfig
reverseProxyConfig
;
readonly
IReverseProxyConfig
reverseProxyConfig
;
private
X509Certificate2
?
caCert
;
ReverseProxyServiceImpl
ReverseProxyService
=>
reverseProxyConfig
.
Service
;
ReverseProxyServiceImpl
ReverseProxyService
=>
reverseProxyConfig
.
Service
;
...
@@ -66,19 +69,24 @@ sealed class CertService
...
@@ -66,19 +69,24 @@ sealed class CertService
/// <returns></returns>
/// <returns></returns>
public
X509Certificate2
?
GetOrCreateServerCert
(
string
?
domain
)
public
X509Certificate2
?
GetOrCreateServerCert
(
string
?
domain
)
{
{
if
(
this
.
caCert
==
null
)
{
this
.
caCert
=
new
X509Certificate2
(
fileName
:
this
.
CaPfxFilePath
,
password
:
default
(
string
));
}
var
key
=
$"
{
nameof
(
CertService
)}
:
{
domain
}
"
;
var
key
=
$"
{
nameof
(
CertService
)}
:
{
domain
}
"
;
return
serverCertCache
.
GetOrCreate
(
key
,
GetOrCreateCert
);
return
serverCertCache
.
GetOrCreate
(
key
,
GetOrCreateCert
);
// 生成域名的 1 年证书
// 生成域名的 1 年证书
X509Certificate2
GetOrCreateCert
(
ICacheEntry
entry
)
X509Certificate2
GetOrCreateCert
(
ICacheEntry
entry
)
{
{
var
domains
=
GetDomains
(
domain
).
Distinct
();
DateTimeOffset
today
=
DateTime
.
Today
;
DateTimeOffset
today
=
DateTime
.
Today
;
var
validFrom
=
today
.
AddDays
(-
1
);
var
notBefore
=
today
.
AddDays
(-
1
);
var
validTo
=
today
.
AddYears
(
1
);
var
notAfter
=
today
.
AddYears
(
1
);
entry
.
SetAbsoluteExpiration
(
notAfter
);
entry
.
SetAbsoluteExpiration
(
validTo
);
var
subjectName
=
new
X500DistinguishedName
(
$"CN=
{
domain
}
"
);
using
var
serverCert
=
CertGenerator
.
GenerateByCaPfx
(
domains
,
validFrom
,
validTo
,
CaPfxFilePath
);
using
var
serverCert
=
CertGenerator
.
CreateEndCertificate
(
this
.
caCert
,
subjectName
,
GetDomains
(),
notBefore
,
notAfter
);
var
serverCertPfx
=
serverCert
.
Export
(
X509ContentType
.
Pfx
);
var
serverCertPfx
=
serverCert
.
Export
(
X509ContentType
.
Pfx
);
// 将生成的证书导出后重新创建一个
// 将生成的证书导出后重新创建一个
return
new
X509Certificate2
(
serverCertPfx
);
return
new
X509Certificate2
(
serverCertPfx
);
...
@@ -90,14 +98,8 @@ sealed class CertService
...
@@ -90,14 +98,8 @@ sealed class CertService
/// </summary>
/// </summary>
/// <param name="domain"></param>
/// <param name="domain"></param>
/// <returns></returns>
/// <returns></returns>
static
IEnumerable
<
string
>
GetDomains
(
string
?
domain
)
static
IEnumerable
<
string
>
GetDomains
()
{
{
if
(
string
.
IsNullOrEmpty
(
domain
)
==
false
)
{
yield
return
domain
;
yield
break
;
}
yield
return
Environment
.
MachineName
;
yield
return
Environment
.
MachineName
;
yield
return
IPAddress
.
Loopback
.
ToString
();
yield
return
IPAddress
.
Loopback
.
ToString
();
yield
return
IPAddress
.
IPv6Loopback
.
ToString
();
yield
return
IPAddress
.
IPv6Loopback
.
ToString
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录