在bash中获取最新版本的openssl

时间:2016-11-25 10:53:49

标签: bash openssl

我正试图在bash中的(p)5中获取最新版本的openssl。我希望得到最新版curl的下载链接和bash中的最新版本。问题是openssl没有&# 39;在他们的github版本中使用1.0.2 series标记。

2 个答案:

答案 0 :(得分:1)

要获取最新的OpenSSL存档,您可以使用其中一个OpenSSL FTP镜像。这是一个示例bash脚本。

#!/bin/bash

# An ftp mirror, see here https://www.openssl.org/source/mirror.html
mirror_url='ftp://gd.tuwien.ac.at/infosys/security/openssl/'

# Last modified date of source directory
last_modified=$(curl -s $mirror_url | awk '/source/{print $6,$7,$8}')

# OpenSSL archive with same modification Date as source dir
latest_archive=$(curl -s "$mirror_url"source/ | grep "$last_modified.*tar.gz$"|awk '{print $NF}')

# URL of latest release
latest_release=$mirror_url"source/"$latest_archive

# Download latest release
curl -sO "$latest_release"

答案 1 :(得分:0)

  

我试图在bash中获得1.0.2系列中最新版本的openssl ...

据我所知,Bash不使用OpenSSL。它也没有内置的下载工具或管理器,因此您需要使用curlwget等外部命令。

要执行下载,您需要访问OpenSSL download页面。然后,它就像:

一样简单
$ wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz
--2016-11-25 10:00:22--  https://www.openssl.org/source/openssl-1.0.2j.tar.gz
Resolving www.openssl.org (www.openssl.org)... 23.6.16.135, ...
Connecting to www.openssl.org (www.openssl.org)|23.6.16.135|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5307912 (5.1M) [application/x-gzip]
Saving to: ‘openssl-1.0.2j.tar.gz’

openssl-1.0.2j.tar. 100%[===================>]   5.06M  6.67MB/s    in 0.8s    

2016-11-25 10:00:23 (6.67 MB/s) - ‘openssl-1.0.2j.tar.gz’ saved [5307912/5307912]

$ tar xzf openssl-1.0.2j.tar.gz 
$

您可以使用以下内容编写脚本:

#!/usr/bin/env bash

VERSIONS=(z y x w v u t s r q p o n m l k j i h g f e d c b a)
for v in ${VERSIONS[@]};
do
    if [[ $(wget -S --spider https://www.openssl.org/source/openssl-1.0.2$v.tar.gz 2>&1 | grep 'HTTP/1.1 200 OK') ]];
    then
        if [[ ! $(wget https://www.openssl.org/source/openssl-1.0.2$v.tar.gz &>/dev/null) ]];
        then
            echo "Downloaded openssl-1.0.2$v.tar.gz"
        else
            echo "Failed to download openssl-1.0.2$v.tar.gz"
        fi

        break
    fi
done