You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

OpenSSL配置文件读取验证方法咨询

OpenSSL配置文件读取验证方法咨询

当然有靠谱的办法验证啦!我来给你拆解两种场景的验证方式——命令行工具和程序调用,确保你能确认OpenSSL确实在读取指定路径的配置文件。

一、命令行场景验证步骤

首先找一个容易观测变化的配置项来修改,比如全局加密套件规则或者默认摘要算法,这里以修改默认加密套件为例:

  1. 打开你要测试的配置文件(比如自定义路径/tmp/my-openssl.cnf),添加或修改以下内容:

    [ssl_default_sect]
    CipherString = HIGH:!aNULL:!MD5:!RC4
    

    如果配置文件里已经有[default_conf]段,记得把ssl_default_sect关联进去:

    [default_conf]
    ssl_default = ssl_default_sect
    
  2. 验证配置是否生效:

    • 先运行不带配置参数的命令,看默认输出:openssl ciphers -v
    • 再运行指定配置文件的命令:openssl ciphers -v -config /tmp/my-openssl.cnf
      对比两次输出的加密套件列表,指定配置的那一次应该会过滤掉RC4、MD5相关的套件,这样就能证明命令行确实读取了指定的配置文件。

    另一个更直观的方法是修改默认摘要算法:
    在配置文件的[req]段里添加default_md = sha512,然后执行:

    openssl req -new -newkey rsa:2048 -nodes -out test.csr -subj "/CN=test"
    openssl req -text -noout -in test.csr
    

    查看输出里的Signature Algorithm字段,如果显示sha512WithRSAEncryption,就说明配置生效了。

  3. 验证环境变量指定的配置:
    设置环境变量export OPENSSL_CONF=/tmp/my-openssl.cnf,然后直接运行openssl ciphers -v,如果输出和指定-config参数的结果一致,就证明OpenSSL会读取环境变量指定的配置文件。

二、程序调用场景验证

如果是自己写代码调用OpenSSL API,要确认配置是否被读取,可以这样做:

  1. 在代码里显式加载指定配置文件(如果需要的话):

    #include <openssl/conf.h>
    // 加载自定义配置
    OPENSSL_config("/tmp/my-openssl.cnf");
    
  2. 通过API获取配置对应的参数来验证,比如获取默认加密套件:

    #include <openssl/ssl.h>
    const char *cipher_str = SSL_get_default_cipher_list(SSL_CTX_new(TLS_method()));
    printf("默认加密套件:%s\n", cipher_str);
    

    打印出来的字符串应该和你在配置文件里设置的CipherString规则一致。

    或者验证默认摘要算法:

    #include <openssl/evp.h>
    EVP_MD *default_md = EVP_get_default_digest();
    printf("默认摘要算法:%s\n", EVP_MD_name(default_md));
    

    如果配置里设的是sha512,这里应该输出SHA512

额外提醒

  • 注意有些OpenSSL命令(比如openssl version -a)只会显示默认配置文件的路径,但不会展示具体配置项的内容,所以不能靠它验证配置是否生效,得看实际功能相关的命令输出。
  • 如果你修改的是系统默认配置文件(比如/etc/ssl/openssl.cnf),要注意权限问题,修改后确保OpenSSL能读取到。

备注:内容来源于stack exchange,提问作者Brian

火山引擎 最新活动