DotNet微服务gRPC证书问题处理

本来运行好好的 dotnet 微服务,某个服务突然502。

查服务中心 Consul ,后端服务正常注册,健康返回OK。

查到网关报错:RemoteCertificateNameMismatch。

后端服务使用了 gRPC,必须使用 http2.0 ,而 http2.0 要求使用 https,因此 Ocolet 网关配置该服务为 https 协议。

问题就出在这个 https 上,百思不得其解,之前一直正常的,怎么突然就不认了?

最后开启了 Ocolet 日志:

// appsettings.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Ocelot": "Debug",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

查到 Ocolet 调用的下游服务是主机名,而证书是IP地址,破案了。

解决:重新生成证书,把别名,主机地址写入证书别名中。

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr

创建文件v3.ext:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = {hostname}
DNS.2 = {hostname}.local
IP.1 = 192.168.0.131

这里 {hostname} 做脱敏处理,在实际项目中替换为真实主机名。

制作证书:

openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365 -extfile v3.ext

最后在服务中使用证书,在客户端(gateway)安装信任证书,问题解决。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇