首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据SqlClient的验证过程,远程证书无效。

根据SqlClient的验证过程,远程证书无效。
EN

Stack Overflow用户
提问于 2019-09-19 06:02:45
回答 1查看 4K关注 0票数 3

我使用的是MyHealthClinic应用程序(https://azuredevopslabs.com/labs/vstsextend/kubernetes/),它是一个.NET核心前端和后端Kubernetes集群,并部署到Google引擎,试图连接到Server,但当吊舱试图在拖动我推送的映像后启动时,CrashLoopBackOff会收到以下错误:

代码语言:javascript
复制
Unhandled Exception: System.Data.SqlClient.SqlException: A connection was successfully 
established with the server, but then an error occurred during the pre-login handshake. 
(provider: TCP Provider, error: 35 - An internal exception was caught) ---> 
System.Security.Authentication.AuthenticationException: The remote certificate is invalid 
according to the validation procedure. at 
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken ...

我检查了我的appsettings.json,它似乎是正确的,因为我将它设置为:

代码语言:javascript
复制
"DefaultConnection": "Server={my-external-IP},1433;Initial Catalog=mhcdb;Persist Security Info=False;User ID={sqlusername};Password={sqlpassword};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

我也证实:

对于机器上的前端集群和本地machine

  • Firewall,
  • SQL VM可以从我所拥有的所有外部IP中访问,并且由于VPC网络具有端口1433允许
  • ,所以我可以使用SQL VM和creds
  • IP从本地计算机成功地连接,因为没有http/https

指定了连接字符串。

还有别的地方我可以检查一下吗?我能够毫无问题地将集群部署到Azure中的AKS,但不确定GKE是否阻塞了来自集群的出站连接。到目前为止,我发现的唯一类似问题都与SMTP服务器有关。我对GKE有点陌生,所以任何想法都会有帮助。

如果有帮助,下面是我的部署YAML文件( AKS集群的文件保持不变,因此不确定是否需要对GKE进行特定更改):

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mhc-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mhc-back
    spec:
      containers:
      - name: mhc-back
        image: redis
        ports:
        - containerPort: 6379
          name: redis

---

apiVersion: v1
kind: Service
metadata:
  name: mhc-back
spec:
  ports:
  - port: 6379
  selector:
    app: mhc-back

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mhc-front
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  minReadySeconds: 5 
  template:
    metadata:
      labels:
        app: mhc-front
    spec:
      containers:
      - name: mhc-front
        image: {gcr.io/[Project-Id]}/myhealth.web:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 250m
          limits:
            cpu: 500m
        env:
        - name: REDIS
          value: "mhc-back"

---

apiVersion: v1
kind: Service
metadata:
  name: mhc-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: mhc-front
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-19 19:52:23

在开始研究远程证书(SQL)无效的原因后,我将连接字符串更改为包含TrustServerCertificate=True。因为这是一个演示环境,而且我保留了Encrypt=True,所以看起来它修复了所有的东西!如果有人认为绕过服务器证书是个坏主意,请告诉我。

代码语言:javascript
复制
"DefaultConnection": "Server={my-external-IP},1433;Initial Catalog=mhcdb;Persist Security Info=False;User ID={sqlusername};Password={sqlpassword};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;Connection Timeout=30;"
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58004602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档