本地代码托管工具

 

visual svn server -- 服务端

https://www.visualsvn.com/server/download/

 

tortoise client

https://tortoisesvn.net/downloads.html

 

 

问题1:

我在windows电脑上安装了 visual svn server,创建了一个用户,创建了一个 Repositories。但是我在浏览器里面访问这个url地址的时候,却提示了错误。例如这个URL https://desktop-abc/svn/test1/ 错误信息如下 无法访问此网站 网址为 https://desktop-abc/svn/test1/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。 ERR_SSL_KEY_USAGE_INCOMPATIBLE

 

问题2:

为啥我在另外一台电脑安装visual svn server 之后,一切都正常,也能在网页浏览新创建的目录的 url呢???

 

证书 详细信息  常规

证书路径 显示(S):
<所有>
字段

使用者  henrypc
公钥 RSA (2048 Bits)
公钥参数  05 00
密钥用法  Digital Signature, Key Encipherment, Data Encip
增强型密钥用法  服务器身份验证(1.3.6.1.5.5.7.3.1)
使用者可选名称 DNS Name=henrypc
指纹 b3f3af62ecaa2f8cb4fbb3cad1bbc1256c9a68a3
Digital Signature, Key Encipherment, Data Encipherment (b0)

 

 

 

 

问题回答1:

ERR_SSL_KEY_USAGE_INCOMPATIBLE 错误通常是因为 SSL 证书配置不正确,或者证书与服务器的 SSL/TLS 设置不兼容。

你可以按照以下步骤进行排查和修复:

1. 检查 SSL 证书
确保你为 VisualSVN Server 配置了正确的 SSL 证书。你可以使用自签名证书,或者从受信任的证书颁发机构(CA)获取证书。如果是自签名证书,你需要确保客户端信任该证书。

如果你刚开始使用 VisualSVN Server,默认情况下可能会生成一个自签名证书。

2. 检查证书的 Key Usage
证书的 Key Usage 属性需要支持服务器身份验证。你可以用工具(比如 OpenSSL)查看证书的详细信息,确保证书的 Key Usage 中包含了 Digital Signature 和 Key Encipherment,这些是 SSL/TLS 握手所需要的。

你可以在证书文件上右键查看详细信息,查看证书的“密钥用途”字段是否正确。

3. 检查 VisualSVN Server 的配置
打开 VisualSVN Server 管理工具,确认配置了正确的 SSL 设置。

如果你使用的是自签名证书,尝试重新生成证书,或者更换成受信任的证书。

确保 https://desktop-42em4eq/svn/ 中的 desktop-42em4eq 可以被正确解析到你的 Windows 机器。

4. 浏览器缓存与重启
有时浏览器会缓存旧的证书或 SSL 配置,导致问题。你可以清理浏览器缓存并重启浏览器,或者试着用不同的浏览器访问 URL。

还可以尝试在浏览器中访问 http://desktop-42em4eq/svn/test1/ 看是否能通过 HTTP 连接,以确认问题是 SSL 配置问题而不是 SVN 服务器的访问问题。

5. 检查防火墙和端口
确保你的 Windows 防火墙或其他网络防火墙没有阻止 443 端口(HTTPS)上的连接。

你可以尝试使用 telnet desktop-42em4eq 443 来检查端口是否可访问。

6. 查看日志
VisualSVN Server 会记录日志,你可以查看服务器的日志文件,看是否有更详细的错误信息,帮助你定位问题。

如果这些步骤都无法解决问题,可以考虑重新配置 SSL 证书,或者尝试使用 HTTP(不加密连接)来排除 SSL 配置的问题。

 

 

问题回答2:

如果在另一台电脑上安装了 VisualSVN Server 并且一切正常,而在当前电脑上却出现问题,可能是以下几个原因:

### 1. **SSL 证书的问题**
   - 在第一台电脑上,可能是 SSL 证书的配置不正确,或者是证书本身的问题。例如,你可能在第一台电脑上使用了自签名证书,而浏览器并未信任该证书,导致连接失败。
   - 在第二台电脑上,可能安装了受信任的证书,或者浏览器自动信任了该自签名证书,导致没有出现问题。

   **解决办法**:检查并重新配置 SSL 证书,确保证书被正确安装并且浏览器信任。

### 2. **网络访问或 DNS 配置问题**
   - 第一台电脑上的 URL 使用了 `desktop-42em4eq`,如果该主机名没有正确解析(例如,DNS 配置不正确,或者没有正确映射到 IP 地址),浏览器可能无法访问。第二台电脑上可能能够正确解析该主机名。
   
   **解决办法**- 尝试在浏览器上直接使用 IP 地址来访问,比如 `https://<your-ip>/svn/test1/`,看看是否能正常访问。
   - 检查第一台电脑的主机名解析,确保网络中其他设备能够正确访问该主机。

### 3. **防火墙设置**
   - 第一台电脑的防火墙或网络设置可能阻止了 HTTPS 连接。即使 VisualSVN Server 配置正确,防火墙也可能会阻止 443 端口的通信。
   - 在第二台电脑上,可能没有这种防火墙或网络阻挡。

   **解决办法**- 检查第一台电脑的防火墙设置,确保允许端口 443 通过。可以暂时禁用防火墙来排除这个问题。
   - 如果你使用的是 Windows 防火墙,检查“允许应用通过 Windows 防火墙”设置中是否允许 `VisualSVN Server` 进行访问。

### 4. **浏览器与缓存问题**
   - 如果浏览器缓存了旧的 SSL 配置信息,可能会导致访问失败。第二台电脑上没有这个问题。
   
   **解决办法**- 清除浏览器缓存,或者使用隐私/无痕模式访问 URL。
   - 尝试使用不同的浏览器。

### 5. **VisualSVN Server 配置差异**
   - 第二台电脑可能配置得更为正确,或者在安装过程中没有出现问题。第一台电脑上的配置可能有某些错误,比如配置了错误的监听端口、路径或权限设置。

   **解决办法**- 确保第一台电脑上的 VisualSVN Server 配置与第二台电脑一致,尤其是 SSL 设置和监听端口。

### 6. **SSL/TLS 协议的兼容性问题**
   - 第二台电脑的浏览器可能支持更多的 SSL/TLS 协议和加密套件,而第一台电脑上的 SSL 配置可能不兼容某些浏览器版本,导致 `ERR_SSL_KEY_USAGE_INCOMPATIBLE` 错误。

   **解决办法**- 检查 VisualSVN Server 的 SSL 配置,确保支持常见的 SSL/TLS 协议,或者使用更现代的证书和加密算法。

### 7. **VisualSVN Server 服务没有正确启动**
   - 在第一台电脑上,VisualSVN Server 可能没有正确启动或者服务配置有问题。你可以尝试重新启动 VisualSVN Server 服务,或者检查服务的日志,看看是否有任何错误。

   **解决办法**- 打开 VisualSVN Server 管理工具,查看服务状态,确认它正在运行。

### 8. **端口冲突**
   - 可能在第一台电脑上,HTTPS(443 端口)被其他程序占用,导致 VisualSVN Server 无法正常监听该端口。第二台电脑可能没有这个问题。

   **解决办法**- 检查 443 端口是否被其他程序占用,你可以使用命令 `netstat -an | find "443"` 来查看端口占用情况。

### 总结
你可以从以下几个方面排查问题:
1. **SSL 证书配置**:确保证书正确并被浏览器信任。
2. **网络配置和 DNS**:确认主机名能够正确解析。
3. **防火墙设置**:确保没有阻止 443 端口。
4. **VisualSVN 配置**:检查服务的配置是否正确。

如果排查以上方面后仍然无法解决,建议尝试重装 VisualSVN Server,或者直接使用 HTTP 协议进行测试,排除 SSL 配置的问题。

 

 

问题3:

根据你的描述,访问 VisualSVN Server 的 HTTPS URL 时出现 `ERR_SSL_KEY_USAGE_INCOMPATIBLE` 错误,这通常与 SSL/TLS 证书的配置问题有关。以下是逐步排查和解决问题的方案:

---

### **1. 确认 VisualSVN Server 服务状态**
- 打开 **Windows 服务管理器**(按 `Win + R` 输入 `services.msc`)。
- 检查以下服务是否正在运行:
  - **VisualSVN Server**
  - **Apache Subversion**(相关服务)
- 如果服务未运行,右键启动并设置为“自动启动”。

---

### **2. 检查 URL 格式和端口**
- VisualSVN Server 默认使用 **HTTPS 端口 443** 和 **HTTP 端口 80**- 确保 URL 格式正确,例如:
  ```url
  https://desktop-42em4eq/svn/test1/
  ```
  或指定端口(如果自定义过):
  ```url
  https://desktop-42em4eq:8443/svn/test1/
  ```
- 如果端口被修改,需在 URL 中显式指定端口号。

---

### **3. 临时测试 HTTP 访问**
- 尝试使用 **HTTP** 替代 HTTPS 访问仓库,验证是否是 SSL 证书问题:
  ```url
  http://desktop-42em4eq/svn/test1/
  ```
- 如果 HTTP 可以访问,说明问题确实出在 SSL 证书配置上。

---

### **4. 解决 SSL 证书问题**
VisualSVN Server 默认使用自签名证书,可能导致浏览器不信任或密钥用途不兼容。以下是修复步骤:

#### **4.1 重新生成证书(推荐)**
1. 打开 **VisualSVN Server Manager**(以管理员身份运行)。
2. 右键点击服务器名称(如 `https://desktop-42em4eq:8443`),选择 **Properties**3. 切换到 **Certificate** 选项卡,点击 **Generate new certificate**4. 填写证书信息(如 Common Name 为服务器主机名 `desktop-42em4eq`)。
5. 生成完成后,重启 VisualSVN Server 服务。

#### **4.2 导出并信任证书**
1. 在 **Certificate** 选项卡中,点击 **View Certificate**2. 切换到 **Details** 选项卡,点击 **Copy to File**,导出证书(`.cer` 格式)。
3. 双击导出的证书文件,选择 **Install Certificate**4. 选择 **Local Machine** > **Place all certificates in the following store** > **Trusted Root Certification Authorities**5. 完成安装后,重启浏览器并重新访问 HTTPS URL。

#### **4.3 检查证书密钥用途**
- 如果问题依旧,可能是证书的密钥用途(Key Usage)配置错误。
- 使用 OpenSSL 检查证书详细信息:
  ```bash
  openssl x509 -in "C:\Program Files\VisualSVN Server\conf\server.crt" -text -noout
  ```
- 确保证书的以下字段包含正确值:
  ```ini
  Key Usage:
    Digital Signature, Key Encipherment
  Extended Key Usage:
    TLS Web Server Authentication
  ```
- 如果不符合,需重新生成证书或联系证书颁发机构(CA)修正。

---

### **5. 检查防火墙设置**
- 确保 Windows 防火墙允许入站流量通过 VisualSVN Server 的 HTTPS 端口(默认 443 或自定义端口)。
- 打开 **Windows Defender 防火墙** > **高级设置** > **入站规则**,确认有允许 Apache HTTP Server 或相关端口的规则。

---

### **6. 清除浏览器缓存和 SSL 状态**
- 浏览器可能缓存了旧的证书信息。尝试以下操作:
  1. 清除浏览器缓存。
  2. 重置 SSL 状态:
     - 打开命令提示符,运行:
       ```cmd
       ipconfig /flushdns
       ```

---

### **7. 使用 SVN 客户端测试**
- 使用 **TortoiseSVN** 或命令行测试仓库访问:
  ```bash
  svn ls https://desktop-42em4eq/svn/test1/ --username your_username
  ```
- 如果客户端提示证书错误,选择永久接受证书(`p` 选项)。

---

### **8. 查看 VisualSVN Server 日志**
- 日志路径:`C:\Program Files\VisualSVN Server\log`
- 检查 `error.log` 或 `ssl_error.log`,寻找与 SSL 握手失败相关的错误信息。

---

### **9. 替代方案:使用 IP 地址或绑定域名**
- 如果主机名解析有问题,尝试用服务器 IP 地址访问:
  ```url
  https://192.168.x.x/svn/test1/
  ```
- 或在 VisualSVN Server 中绑定域名,确保证书的 Common Name(CN)与访问地址一致。

---

### **总结**
通过重新生成证书、信任证书、检查端口和防火墙,应能解决 `ERR_SSL_KEY_USAGE_INCOMPATIBLE` 错误。如果问题依旧,考虑升级 VisualSVN Server 或联系其技术支持。

 

 

问题回答4:

根据你的补充信息(另一台电脑安装 VisualSVN Server 完全正常),可以推断问题确实与 VisualSVN Server 本身无关,而是由第一台电脑的特定环境配置引起。以下是更精准的排查方向和解决方案:

---

### **关键原因分析**
错误 `ERR_SSL_KEY_USAGE_INCOMPATIBLE` 的核心是 **SSL 证书的密钥用途(Key Usage)或扩展密钥用途(Extended Key Usage)不兼容浏览器要求**。常见触发场景:
1. **自签名证书配置错误**:证书缺少 `TLS Web Server Authentication` 用途。
2. **证书链问题**:浏览器无法验证证书信任链。
3. **主机名不匹配**:证书的 Common Name (CN) 或 Subject Alternative Name (SAN) 未包含实际访问的地址(如 `desktop-42em4eq`)。
4. **系统或浏览器限制**:旧版系统/浏览器不支持证书的加密算法(如 SHA-1)。

---

### **针对性解决方案**

#### **1. 检查证书的密钥用途**
通过以下步骤验证第一台电脑的证书配置:
1. **打开证书文件**- 进入 VisualSVN Server 安装目录(默认 `C:\Program Files\VisualSVN Server\conf\`)。
   - 找到 `server.crt`(证书文件)和 `server.key`(私钥文件)。
2. **使用 OpenSSL 检查证书**:
   ```bash
   openssl x509 -in "C:\Program Files\VisualSVN Server\conf\server.crt" -text -noout
   ```
   - 确认以下字段存在且正确:
     ```ini
     Key Usage:
       Digital Signature, Key Encipherment
     Extended Key Usage:
       TLS Web Server Authentication
     X509v3 Subject Alternative Name:
       DNS:desktop-42em4eq  # 你的服务器主机名
     ```

#### **2. 重新生成并绑定正确的证书**
1. **生成新证书**- 打开 **VisualSVN Server Manager**,右键服务器实例,选择 **Properties > Certificate > Generate New Certificate**- 在 **Common Name (CN)** 中填写服务器的主机名(如 `desktop-42em4eq`)。
   - 勾选 **Subject Alternative Name (SAN)** 并添加相同的主机名。
2. **重启服务**- 重启 VisualSVN Server 服务使新证书生效。

#### **3. 信任证书**
即使证书配置正确,浏览器仍可能因自签名证书不受信任而报错。需手动信任证书:
1. **导出证书**- 在 **Certificate** 选项卡点击 **View Certificate > Details > Copy to File**,导出为 `.cer` 文件。
2. **安装到受信任的根证书存储**- 双击导出的 `.cer` 文件,选择 **安装证书 > 本地计算机 > 将所有证书放入以下存储 > 受信任的根证书颁发机构**3. **清除浏览器缓存**- 重启浏览器并访问 `https://desktop-42em4eq/svn/test1/`。

#### **4. 验证主机名解析**
确保客户端能正确解析 `desktop-42em4eq` 到服务器的 IP 地址:
1. **在客户端执行 ping 测试**:
   ```cmd
   ping desktop-42em4eq
   ```
   - 如果无法解析,需在客户端的 `hosts` 文件中添加条目:
     ```ini
     # C:\Windows\System32\drivers\etc\hosts
     192.168.x.x  desktop-42em4eq  # 替换为服务器实际 IP
     ```

#### **5. 检查端口冲突**
确保 VisualSVN Server 的 HTTPS 端口(默认 443)未被其他程序占用:
1. **查看端口监听情况**:
   ```cmd
   netstat -ano | findstr :443
   ```
   - 如果发现其他进程占用端口,需修改 VisualSVN Server 的端口(如 8443)并更新 URL。

#### **6. 排除安全软件干扰**
临时禁用防火墙或杀毒软件,测试是否仍报错:
- **Windows Defender 防火墙**:关闭入站/出站规则测试。
- **第三方安全软件**:如 360、McAfee 等,可能拦截 SSL 握手。

#### **7. 测试不同客户端环境**
- **使用另一台电脑或手机**:访问 `https://desktop-42em4eq/svn/test1/`,确认是否所有设备均报错。
- **使用命令行工具**:
  ```bash
  curl -vk https://desktop-42em4eq/svn/test1/
  ```
  - 输出中会显示详细的 SSL 握手信息,帮助定位证书问题。

---

### **最终验证**
完成上述步骤后,按以下流程确认问题是否解决:
1. **浏览器访问**:直接输入 HTTPS URL。
2. **SVN 客户端访问**:
   ```bash
   svn checkout https://desktop-42em4eq/svn/test1/ --username your_user
   ```
3. **检查日志**- VisualSVN Server 日志路径:`C:\Program Files\VisualSVN Server\log\error.log`

---

### **总结**
问题根源很可能是第一台电脑的 SSL 证书配置(密钥用途或主机名不匹配)或客户端信任问题。通过重新生成证书、绑定正确的主机名、手动信任证书,并确保网络可达性,应能彻底解决 `ERR_SSL_KEY_USAGE_INCOMPATIBLE` 错误。如果仍有问题,可提供浏览器控制台(F12 > Console)的详细错误截图进一步分析。

 

posted @ 2025-04-08 06:35  He_LiangLiang  阅读(155)  评论(0)    收藏  举报