Как нормально настроить grpc c# + nginx.
Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch, RemoteCertificateChainErrors", DebugException="System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch, RemoteCertificateChainErrors
at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
at System.Net.Security.SslStream.ProcessAuthenticationWithTelemetryAsync(Boolean isAsync, CancellationToken cancellationToken)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp2ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionWaiter`1.WaitForConnectionWithTelemetryAsync(HttpRequestMessage request, HttpConnectionPool pool, Boolean async, CancellationToken requestCancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at Grpc.Net.Client.Balancer.Internal.BalancerHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpMessageInvoker.<SendAsync>g__SendAsyncWithTelemetry|6_0(HttpMessageHandler handler, HttpRequestMessage request, CancellationToken cancellationToken)
at Grpc.Net.Client.Internal.GrpcCall`2.RunCall(HttpRequestMessage request, Nullable`1 timeout)")
при подключении выдаёт данную ошибку.
"Kestrel": {
"Endpoints": {
"http": {
"Url": "http://localhost:7331"
},
"Grpc": {
"Url": "http://localhost:7332",
"Protocols": "Http2"
}
}
и nginx
server {
server_name api.platinum-vpn.su;
listen 94.103.88.196:443 ssl http2;
ssl_certificate "/var/www/httpd-cert/api.platinum-vpn.su_2025c-02-18-11-32_10.crt";
ssl_certificate_key "/var/www/httpd-cert/api.platinum-vpn.su_2025-02-18-11-32_10.key";
charset utf-8;
gzip on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/css text/xml application/javascript text/plain application/json image/svg+xml image/x-icon;
gzip_comp_level 1;
set $root_path /var/www/platinum_vpn_usr/data/www/platinum-vpn.su/api;
root $root_path;
disable_symlinks if_not_owner from=$root_path;
# gRPC настройки
location / {
grpc_pass grpc://127.0.0.1:7332; # Указываем порт gRPC
error_page 502 = /error502grpc; # Обработка ошибок
}
location = /error502grpc {
internal;
default_type application/grpc;
add_header grpc-status 14; # UNAVAILABLE
add_header content-length 0;
return 204;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|tff|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
try_files $uri $uri/ @fallback;
}
location @fallback {
grpc_pass grpc://127.0.0.1:7332; # Указываем порт gRPC
error_page 502 = /error502grpc; # Обработка ошибок
}
include "/etc/nginx/fastpanel2-sites/platinum_vpn_usr/api.platinum-vpn.su.includes";
include /etc/nginx/fastpanel2-includes/*.conf;
error_log /var/www/platinum_vpn_usr/data/logs/api.platinum-vpn.su-frontend.error.log;
access_log /var/www/platinum_vpn_usr/data/logs/api.platinum-vpn.su-frontend.access.log;
}
server {
server_name api.platinum-vpn.su;
listen 94.103.88.196:80;
return 301 https://$host$request_uri;
error_log /var/www/platinum_vpn_usr/data/logs/api.platinum-vpn.su-frontend.error.log;
access_log /var/www/platinum_vpn_usr/data/logs/api.platinum-vpn.su-frontend.access.log;
}