自签名证书配置需两端协同:apache端正确生成并加载证书(含匹配cn的密钥与证书、启用mod_ssl、配置virtualhost),客户端端选择跳过验证(如curl -k、requests.verify=false)或导入证书至系统信任库实现一劳永逸信任。

测试环境里用 Apache 配置 HTTPS 时,自签名证书本身不会“跳过验证”——验证发生在客户端(浏览器、curl、代码),Apache 只负责提供证书和私钥。真正要做的,是让客户端信任或忽略这个证书。所以配置分两头:一端在 Apache 上正确启用并加载自签名证书;另一端在客户端主动绕过校验或导入信任。
Apache 端:正确生成并启用自签名证书
这是前提。证书配错,客户端再怎么跳过也连不上。
- 生成密钥和证书(Common Name 必须匹配你访问的地址,比如 localhost 或 192.168.1.100):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \<br> -keyout /etc/ssl/private/apache-selfsigned.key \<br> -out /etc/ssl/certs/apache-selfsigned.crt
- 确保私钥权限严格:
sudo chmod 600 /etc/ssl/private/apache-selfsigned.key - 确认
mod_ssl已启用(Ubuntu/Debian 执行sudo a2enmod ssl;CentOS 执行sudo yum install mod_ssl) - 在虚拟主机配置中指定证书路径,例如:
<virtualhost><br> SSLEngine on<br> SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt<br> SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key<br> ServerName localhost<br></virtualhost>
- 重启 Apache:
sudo systemctl restart apache2(Ubuntu)或sudo systemctl restart httpd(CentOS)
客户端端:让请求不报证书错误
Apache 启好了,但浏览器或工具仍会拦住连接。这时需在调用方处理:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
浏览器访问:打开
https://localhost:443,看到警告页后,点击“高级”→“继续前往(不安全)”。Chrome/Edge 从 2023 年起已不支持直接输入thisisunsafe触发跳过,必须手动点例外。 -
curl 测试:加
-k或--insecure参数,如:curl -k https://localhost/api/test -
Python requests:在请求中传
verify=False,如:requests.get("https://localhost/api", verify=False);全局禁用不推荐,仅限调试脚本。 -
Java 客户端:不能靠配置开关,需代码级绕过,例如自定义
X509TrustManager并注入SSLContext,仅用于单元测试或本地集成测试。
更稳妥的长期做法:把自签 CA 加入系统信任库
比起每次点“继续前往”,一劳永逸的方式是把你的自签名根证书(即 apache-selfsigned.crt)导入操作系统或 JVM 的信任库。这样浏览器、curl、Java、Python(默认行为)都会自动信任它,无需跳过。
- Ubuntu/Debian:
sudo cp apache-selfsigned.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates - macOS:
sudo security add-trusted-cert -d -r trustRoot -k /System/Library/Keychains/SystemRootCertificates.keychain apache-selfsigned.crt - JVM:
keytool -import -trustcacerts -alias mydevca -file apache-selfsigned.crt -keystore $JAVA_HOME/jre/lib/security/cacerts(密码通常是changeit)
不复杂但容易忽略:Apache 只管发证书,验证与否完全由客户端决定。测试阶段选 -k 或浏览器点跳过最快;想少踩坑,建议把证书导入系统信任库。










