当您使用远程桌面连接客户端连接到没有有效 SSL 证书的远程计算机时,您会看到类似如下的框:
我已经知道如何处理这个问题,让该框不出现在每个连接上(“选中不再询问我...”)。我还知道如何在选中“不再询问我”后让该框重新出现。(超级用户上有几个关于此问题的帖子。)此对话框中的一个选项允许您查看服务器证书。
我的问题是当使用远程桌面连接客户端连接到服务器时持有有效证书由受信任的证书颁发机构颁发的证书,我如何查看该证书?(假设我无法访问远程服务器上的证书存储。)
在远程桌面连接版本 6.3.9600 的连接栏中,会出现一个挂锁,类似于您在 Web 浏览器中看到的挂锁。但是,单击挂锁只会显示
再次,当证书有效时,如何查看远程桌面连接所使用的证书?
编辑:在我最初的测试中,我使用客户端 PC(非域)连接到同一子网上的服务器。MSTSC 中的安全(挂锁)图标表示通过 kerberos 进行身份验证。随后从远程网络上的 PC 进行的测试表明通过服务器证书进行身份验证,并让我可以选择查看证书。
所以现在我想知道为什么本地连接通过 kerberos 进行身份验证而远程连接通过证书进行身份验证?
答案1
远程桌面的 RDP 协议使用端口 3389 和 SSL。如果您有 openssl(或者愿意安装它,SSL 的瑞士军刀),那么您可以使用此命令来捕获 RDP 服务器(终端服务器)证书:
openssl s_client -showcerts -connect remoteserver:3389 < nul: |
openssl x509 -outform PEM > remoteserver.cer
这是一行代码,适用于旧命令提示符。对于 PowerShell 使用:
$null |
openssl s_client -showcerts -connect remoteserver:3389 |
openssl x509 -outform PEM > remoteserver.cer
这就是正在发生的事情
- “openssl s_client”启动 SSL 客户端。
- nul: 或使用 $null,因为我们没有数据要发送到服务器
- '-showcerts' 输出服务器证书(由服务器发送)
- ‘-connect’指定主机和端口
第一次调用 openssl 会输出请求的 ssh 连接的详细信息,包括远程服务器证书。此输出将传递到第二个 openssl 实例中,以仅提取证书。
- ‘openssl x509’ 开始证书处理
- '-outform PEM' 将输出格式设置为带有页眉和页脚的 base64 编码。
- '> remoteserver.cer' 将输出捕获到文件。
答案2
Kerberos 不使用证书。如果连接使用 Kerberos 保护,则此连接上没有证书可供查看。