在Tumbleweed正常运行的Bash证书脚本在Kubuntu中报错求助
解决Bash证书脚本在Kubuntu 22.04中找不到domains.ext的问题
错误信息
Can't open "domains.ext" for reading, No such file or directory
4047A01AD37F0000:error:80000002:system library:BIO_new_file:No such file or directory:../crypto/bio/bss_file.c:67:calling fopen(domains.ext, r)
4047A01AD37F0000:error:10000080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:75:
cp: Aufruf von stat für 'fullchain.pem' nicht möglich: Datei oder Verzeichnis nicht gefunden
问题原因
- 脚本执行
cd cert后,会在cert目录下查找domains.ext,但你是在脚本所在的上级目录创建的该文件,路径不匹配。 - 脚本未定义
${CertAUTH}变量,Tumbleweed环境可能默认设置了该变量,但Kubuntu 22.04无此默认值,会导致openssl生成证书时出现空文件名,后续步骤连锁失败。
修复步骤
1. 修正domains.ext路径(二选一)
- 方式一:将已创建的
domains.ext移动到cert目录中:
mv domains.ext cert/
- 方式二:修改脚本中
openssl x509命令的-extfile参数,使用上级目录相对路径:
-extfile ../domains.ext
2. 定义CertAUTH变量
在脚本开头添加变量定义(可自定义名称):
#!/bin/bash CertAUTH="Example-Root-CA" mkdir -p cert/live/exist.ulb.tu-darmstadt.de # ... 其余脚本内容保持不变
3. 可选:增强脚本健壮性
添加目录切换和命令执行失败检查:
cd cert || { echo "无法切换到cert目录"; exit 1; } # 给每个openssl命令添加失败退出逻辑 openssl req \ -x509 \ -nodes \ -new \ -sha256 \ -days 1024 \ -newkey rsa:2048 \ -keyout ${CertAUTH}.key \ -out ${CertAUTH}.pem \ -subj "/C=DE/CN=Example-Root-CA" || { echo "生成根证书失败"; exit 1; }
内容的提问来源于stack exchange,提问作者KWunsch
相关产品推荐
相关产品推荐

