AppLib-CreateSelfSignedSSLCert

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

0.152   2023-06-05  Released-By: PERLANCAR; Urgency: high

        - [bugfix] Forgot octal notation, derp.


0.151   2023-06-05  Released-By: PERLANCAR; Urgency: medium

        - chmod 400 key file.


0.150   2017-10-11  Released-By: PERLANCAR

        - First release, split from App-CreateSelfSignedSSLCert and rename
          App::CreateSelfSignedSSLCert to AppLib::CreateSelfSignedSSLCert so it
          can be used without having to depend on Perinci::CmdLine et al.

lib/AppLib/CreateSelfSignedSSLCert.pm  view on Meta::CPAN

        exec => 'openssl',
    },
};
sub create_self_signed_ssl_cert {
    my %args = @_;

    my $h = $args{hostname};

    system("openssl genrsa 2048 > "._sq("$h.key"));
    return [500, "Can't generate key: ".explain_child_error()] if $?;
    chmod 0400, "$h.key" or warn "WARN: Can't chmod 400 $h.key: $!";

    my $cmd = "openssl req -new -key "._sq("$h.key")." -out "._sq("$h.csr");
    if ($args{interactive}) {
        system $cmd;
        return [500, "Can't generate csr: ".explain_child_error()] if $?;
    } else {
        my $exp = Expect->spawn($cmd);
        return [500, "Can't spawn openssl req"] unless $exp;
        $exp->expect(
            30,

lib/AppLib/CreateSelfSignedSSLCert.pm  view on Meta::CPAN

    ));
    return [500, "Can't generate crt: ".explain_child_error()] if $?;

    system("openssl x509 -noout -fingerprint -text < "._sq("$h.crt").
               "> "._sq("$h.info"));
    return [500, "Can't generate info: ".explain_child_error()] if $?;

    system("cat "._sq("$h.crt")." "._sq("$h.key")." > "._sq("$h.pem"));
    return [500, "Can't generate pem: ".explain_child_error()] if $?;

    system("chmod 400 "._sq("$h.pem"));

    log_info("Your certificate has been created at $h.pem");

    [200];
}

$SPEC{create_ssl_csr} = {
    v => 1.1,
    args => {
        hostname => {



( run in 1.173 second using v1.01-cache-2.11-cpan-496ff517765 )