Linux下wget出现ERROR: cannot verify Issued certificate has expire

在Linux中使用wget下载文件时遇到证书过期问题,错误提示为:ERROR: cannot verify Issued certificate has expired。解决方案是在wget命令后添加参数`--no-check-certificate`,以不检查证书的方式继续下载。

大家好,我是「Bigder」~

Linux下使用wget下载tomcat「wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz」

出现下面的错误提示,不能下载:

wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz --2022-04-06 21:54:57-- https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz Resolving dlcdn.apache.org (dlcdn.apache.org)… 191.101.2.132, 2a04:4e42::644 Connecting to dlcdn.apache.org (dlcdn.apache.org)|191.101.2.132|:443… connected. ERROR: cannot verify dlcdn.apache.org’s certificate, issued by ‘/C=US/O=Let’s Encrypt/CN=R3’: Issued certificate has expired. To connect to dlcdn.apache.org insecurely, use `–no-check-certificate’.

解决方法:

wget带参数:–no-check-certificate

「wget --no-check-certifica

<think>我们面对的问题是在使用R的`download.file`函数下载STRING数据库文件时遇到SSL证书错误。根据引用[2]中的描述,`download.file`函数支持多种下载方法(method),并且可以通过`extra`参数传递额外的命令行参数。同时,引用[3]中提到,有时网络问题可能与代理或证书验证有关。 解决方案思路: 1. 尝试使用不同的下载方法(如"libcurl"或"wininet"),这些方法可能对SSL证书的处理更灵活。 2. 在下载时添加忽略SSL证书验证的选项(具体选项因下载方法而异)。 3. 检查网络连接和代理设置,确保能够访问目标网站。 具体步骤: ### 1. 使用libcurl方法并忽略证书验证 对于`method = "libcurl"`,我们可以使用`-k`或`--insecure`选项来跳过SSL证书验证。在R中,我们可以这样写: ```r url <- "https://stringdb-static.org/download/protein.info.v11.5/9606.protein.info.v11.5.txt.gz" destfile <- "9606.protein.info.v11.5.txt.gz" download.file(url, destfile, method = "libcurl", extra = "-k") ``` ### 2. 使用wget方法并忽略证书验证 如果系统中安装了wget,可以使用wget方法并添加`--no-check-certificate`选项: ```r download.file(url, destfile, method = "wget", extra = "--no-check-certificate") ``` 注意:需要确保wget已经安装且R能够找到其路径(如之前回答所述)。 ### 3. 使用wininet方法(仅Windows) 在Windows系统上,可以尝试使用内置的"wininet"方法,它可能对证书的处理更宽松: ```r download.file(url, destfile, method = "wininet") ``` ### 4. 设置全局下载选项 如果需要在多个下载操作中忽略证书验证,可以设置全局选项(针对libcurl): ```r options(download.file.extra = "-k") download.file(url, destfile, method = "libcurl") ``` 但注意,这会影响后续所有使用`method="libcurl"`的下载。 ### 5. 检查网络连接和代理 如果上述方法都不行,可能是网络问题。引用[3]提到,可以尝试用IE浏览器打开URL,因为R在Windows上可能使用IE的代理设置。如果IE打不开,则需要配置代理: ```r # 设置代理(示例) Sys.setenv(http_proxy = "http://proxy.example.com:8080") Sys.setenv(https_proxy = "http://proxy.example.com:8080") ``` ### 6. 手动下载 如果仍然无法解决,可以手动在浏览器中下载该文件,然后在R中读取本地文件。 总结:优先尝试使用`method="libcurl"`并添加`extra="-k"`参数,这是解决SSL证书问题的常用方法。 注意:忽略SSL证书验证会带来安全风险,但在访问已知安全的资源(如STRING数据库)时,可以临时使用。 示例代码(综合): ```r # 设置忽略证书验证(仅本次下载) download.file( url = "https://stringdb-static.org/download/protein.info.v11.5/9606.protein.info.v11.5.txt.gz", destfile = "9606.protein.info.v11.5.txt.gz", method = "libcurl", extra = "-k" ) ``` 如果遇到其他问题,请检查URL是否正确(版本号v11.5是否仍然可用)以及文件是否存在。 相关问题: 1. 如何在R中设置全局下载方法? 2. 使用`download.file`时如何跳过SSL证书验证? 3. R下载文件时如何显示实时进度条? 4. 除了`download.file`,R还有哪些包可以处理文件下载?</think>### 解决 R 中 download.file SSL 证书问题(连接 stringdb-static.org 失败) 以下是针对 STRING 数据库下载问题的完整解决方案,按优先级排序: --- #### 1. **强制跳过 SSL 证书验证(推荐)** ```r # 使用 libcurl 方法并忽略证书验证 download.file( url = "https://stringdb-static.org/download/protein.info.v11.5/9606.protein.info.v11.5.txt.gz", destfile = "protein_info.txt.gz", method = "libcurl", extra = "-k" # -k 参数忽略证书验证 ) ``` - **原理**:`-k` 参数使 libcurl 跳过 SSL/TLS 证书检查 - **适用**:所有操作系统,优先推荐此方案[^2] --- #### 2. **修改全局下载设置** ```r # 设置全局选项(会话有效) options( download.file.method = "libcurl", download.file.extra = "-k" # 全局忽略证书 ) # 执行下载 download.file( "https://stringdb-static.org/download/protein.info.v11.5/...", "protein_info.txt.gz" ) ``` - **优势**:一次设置,影响后续所有下载操作[^2] --- #### 3. **Windows 专用解决方案** ```r # 使用 Windows 内置网络组件 download.file( url = "https://stringdb-static.org/download/protein.info.v11.5/...", destfile = "protein_info.txt.gz", method = "wininet", # 使用 IE 引擎 extra = "--insecure" # 忽略证书错误 ) ``` - **注意**:需确保 IE 能打开该 URL(测试方法见引用[3])[^3] --- #### 4. **系统级证书修复(终极方案)** 若上述方法无效,需更新系统根证书: 1. **Windows**: - 打开 IE → 设置 → Internet 选项 → 高级 → 重置 - 或下载 [Microsoft Root Certificate Update](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate) 2. **Linux/macOS**: ```bash # Ubuntu/Debian sudo apt install --reinstall ca-certificates # CentOS/RHEL sudo yum reinstall ca-certificates # macOS curl https://curl.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem ``` --- ### 故障诊断流程图 ```mermaid graph TD A[下载失败] --> B{错误类型} B -->|SSL 证书错误| C[尝试 libcurl -k] B -->|连接超时| D[检查代理设置] C --> E[成功?] E -->|是| F[完成] E -->|否| G[更新系统根证书] D --> H[Sys.setenv https_proxy='...'] H --> I[重试下载] ``` --- ### 补充说明 1. **STRING 文件路径说明**: - 替换 URL 中的 `9606` 为其他物种 ID(人类=9606,小鼠=10090) - 完整文件列表:https://stringdb-static.org/cgi/download.pl 2. **备选下载方法**(当证书问题无法解决时): ```r # 使用 RCurl 包 library(RCurl) url <- "https://stringdb-static.org/...txt.gz" bin <- getBinaryURL(url, ssl.verifypeer = FALSE) writeBin(bin, "protein_info.txt.gz") ``` --- ### 相关问题 1. 如何在 R 中设置全局下载方法? 2. 使用 `download.file` 时如何跳过 SSL 证书验证? 3. R 下载文件时如何显示实时进度条? 4. 除了 `download.file`,R 还有哪些包可以处理文件下载? > 通过正确处理 SSL 证书验证问题,您将能稳定下载 STRING 数据库的蛋白质信息文件[^1]。若企业网络有严格限制,建议联系 IT 部门获取受信任的根证书安装包。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iBigder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值