Docker 安装sql server 登陆失败

news/2024/10/22 8:14:20/

错误:

Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]. Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722

遇到这个错误通常是因为 SQL Server 客户端尝试与 SQL Server 建立安全连接时,无法验证服务器提供的证书。SQL Server 容器默认会生成一个自签名证书,而这个证书可能不会被客户端信任,导致连接失败。以下是几种解决方法:

方法 1: 禁用证书验证

对于开发或测试环境,你可以通过禁用证书验证来绕过这个问题。请注意,这种方法在生产环境中不推荐使用,因为它会降低安全性。

使用 sqlcmd 连接时禁用证书验证
sqlcmd -S localhost -U sa -P 'YourStrong!Passw0rd' -C

这里的 -C 参数告诉 sqlcmd 忽略证书验证错误。

方法 2: 使用自定义证书

为了提高安全性,你可以为 SQL Server 配置一个由受信任的 CA(证书颁发机构)签发的证书。

  1. 生成或获取证书

    • 你可以从一个受信任的 CA 获取证书,或者使用 OpenSSL 生成一个自签名证书。
  2. 将证书文件复制到 SQL Server 容器中

    • 使用 docker cp 命令将证书文件复制到容器中。
  3. 配置 SQL Server 使用该证书

    • 进入容器内部,使用 SQL Server 配置管理器或其他工具配置 SQL Server 使用新的证书。

方法 3: 信任自签名证书

如果你使用的是自签名证书,可以将其添加到客户端的信任证书列表中。

  1. 导出自签名证书

    • 从 SQL Server 容器中导出自签名证书。你可以进入容器并使用 openssl 工具导出证书。
  2. 将证书导入客户端的信任存储

    • 在 Windows 上,你可以使用 certmgr.msc 导入证书。
    • 在 Linux 上,你可以将证书添加到 /etc/ssl/certs 目录,并更新证书索引。

方法 4: 使用 mssql-conf 配置 SQL Server

如果你有权限访问 SQL Server 容器,可以使用 mssql-conf 工具来配置 SQL Server 的网络设置,包括证书。

  1. 进入容器

    docker exec -it sqlserver1 /bin/bash
  2. 运行 mssql-conf

    /opt/mssql/bin/mssql-conf set network.ssl 0

方法 5: 使用环境变量配置 SQL Server

你也可以在启动容器时通过环境变量来配置 SQL Server 使用特定的证书。

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=YourStrong!Passw0rd' \-e 'MSSQL_TLS_CERTIFICATE=/path/to/your/certificate.pem' \-e 'MSSQL_TLS_KEY=/path/to/your/privatekey.pem' \-p 1433:1433 --name sqlserver1 -d mcr.microsoft.com/mssql/server:2019-latest

这里的 MSSQL_TLS_CERTIFICATEMSSQL_TLS_KEY 环境变量指定了证书和私钥的路径。


http://www.ppmy.cn/news/1541015.html

相关文章

网络相关(HTTP/TCP/UDP/IP)

网络相关 常见的状态码 100 临时响应 100 继续,请求者应当继续提出请求101 切换协议200 成功响应 200: 服务器成功处理请求201 以创建,请求成功并且服务器创建了新的资源202 已接受:服务器已接受请求,但尚未处理203 非授权信息:服务器已成功处理请求,但返回的信息可能来…

2024.10月18日- Vue2组件开发(3)

Vue组件开发 一、 ref属性 如果在vue里,想要获取DOM对象,并且不想使用JS的原生语法,那么就可以使用ref属性。ref属性的用法: 1)在HTML元素的开始标记中,或者在Vue子组件中的开始标记中定义,相…

大数据面试题整理——Yarn

系列文章目录 第一章 HDFS面试题 第二章 MapReduce面试题 文章目录 系列文章目录什么是 Yarn?一、Yarn 的主要组件及其功能是什么?二、Yarn 中的容器(Container)是什么?三、简述 Yarn 的工作流程。四、Yarn 如何进行资…

Python网络请求库requests的10个基本用法

大家好!今天我们要聊聊Python中非常实用的一个库——requests。这个库让发送HTTP请求变得超级简单。无论你是想抓取网页数据还是测试API接口,requests都能派上大用场。下面我们就一起来看看如何使用requests完成一些常见的任务。 引言 随着互联网技术的…

高中数学网盘资料(每题有解析和知识点)

一、究极超能学习资源高中版 一数作为播放量过亿的哔站up实力非同一般 链接:https://pan.baidu.com/s/1xrcAlq6wj_LMYHcbxAKAWg 提取码:7MBW 复制这段内容打开「百度网盘APP 即可获取」 二、必刷题高考合订本(刷题必备) 链接&am…

lazyLoad

//1.通过React的lazy函数配合import()函数动态加载路由组件 > 路由组件代码会被分开打包 const Login lazy(()>import(/pages/Login)) //2.通过<Suspense>指定在加载得到路由打包文件前显示一个自定义loading界面 <Suspense fallback{<h1&…

支持国密算法的数字证书-国密SSL证书详解

在互联网中&#xff0c;数字证书作为标志通讯各方身份信息的数字认证而存在&#xff0c;常见的数字证书大都采用国际算法&#xff0c;比如RSA算法、ECC算法、SHA2算法等。随着我国加强网络安全技术自主可控的大趋势&#xff0c;也出现了支持国密算法的数字证书-国密SSL证书。那…

【BUG】解决已安装anaconda的pycharm中jupyter服务器中出现的import jieba失败问题

目录 确认已安装anacondaAnaconda权限问题修改权限结束 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 确认已安装anaconda 如图&#xff0c;已…