代码之家  ›  专栏  ›  技术社区  ›  Facundo

在bash中使用openssl以编程方式根据链和任意时间戳验证证书(用于续订)

  •  0
  • Facundo  · 技术社区  · 7 年前

    is_cert_valid () {
        # pem cert, pem cert chain, timestamp
        local signed="$1" signer="$2" at_time="$3"
        openssl verify -attime "$at_time" -CAfile "$signer" "$signed"
        return $?
    }
    

    但是,退出代码 openssl verify 不反映给定证书的有效性,但是(据我所知)如果命令未能执行检查。

    一个人怎么去重写 is_cert_valid 这样它就可以在bash if语句中使用了?假设不使用其他编程语言(如python或c)就可以实现这一点。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Facundo    7 年前

    is_cert_valid () {
        local signer="$1" signed="$2" at_time_offset="$3" output
        if output="$(openssl verify \
                        -CApath /dev/null \
                        -attime "$(( "$at_time_offset" + "$(date +%s)" ))" \
                        -partial_chain \
                        -trusted "$signer" \
                        "$signed" \
                )" && 
            [[ "$output" == "$signed: OK" ]]; then
            return 0
        fi
        return 1
    }