web-dev-qa-db-ja.com

apt-get upgradeopensslはUbuntu12.04を最新バージョンにしません

私は以下を試しましたが、それ以降にビルド日付を取得できません:

2012年8月21日火曜日05:18:46UTC

私は次のことを行いました:

apt-get dist-upgrade
apt-get update
apt-get upgrade openssl

そして

apt-get purge openssl
apt-get install openssl

そして

apt-get purge libcrypto1.0.0
apt-get install libcrypto1.0.0

すべてが正常に動作しているように見えますが、ビルド日付は上記のとおりです。そして http://filippo.io/Heartbleed/ テストはまだ失敗しています。

水曜日に同じサーバーを更新できたので、私は気が狂っていないことを知っています。 (ハードウェアを除いてすべての点で同一)。

編集:

両方のマシンで/etc/apt/sources.listファイルを比較しましたが、同じように見えます。 1つのサーバーはどのように更新され、他のサーバーは更新されませんでしたか?

編集:

提案どおりに行いました:

apt-get purge openssl
reboot
apt-get install openssl
reboot

無駄に。

Libssl1.0.0で同じコマンドを試しましたが、上記と同じバージョンです。

これは私を困惑させました。

助言がありますか?

[〜#〜]編集[〜#〜]

十分な通りの信用(15)を取得したらすぐに、実行可能な回避策を+1します

[〜#〜]編集[〜#〜]

提案されているように、私はapt-getを--reinstall --print-urisで実行し、戻ってきました。

http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1-4ubuntu5.12_AMD64.deb

次に、上記と同じバージョンで再起動しました。まだハートブリードに失敗しています。

6
user1182988

パッケージの再インストールを強制する

Aptは、パッケージがインストールおよびアップグレードされていると考えています。 libsslの手動検証とテストは別の方法を示唆しているため、パッケージデータベースはインストールされているファイルと矛盾しています(ファイルは以前にパッケージマネージャーの関与なしにアップグレードされていた可能性があります)。何らかの理由でこれが発生したため、パッケージが正しくアップグレードまたは再インストールされていません。これは、システムが修正バージョンを報告していることが確立されているが、それでも脆弱性を示していることを前提としています。

まず、影響を受けるパッケージを強制的に再インストールしてみてください。

apt-get install --reinstall libssl1.0.0

それが失敗した場合は、Aptの依存関係管理やサニティチェックを一切行わずに、パッケージを完全に削除してみてください。

dpkg --force-all --remove libssl1.0.0

この時点で、libsslが欠落していて、それに依存する多くのパッケージがまだインストールされているため、システムは事実上「壊れています」(これがAptが防止しようとしていることであり、Aptの背後にある理由です)。 libssl1.0.、リポジトリから最新のパッケージを再ダウンロードします。

apt-get clean && apt-get install libssl1.0.0

または、既知の正常なdebパッケージをダウンロードした場合は、dpkgを使用して、既存のファイルをインストールして強制的に上書きすることができます。

dpkg --force-overwrite -i libssl1.0.0_1.0.1-4ubuntu5.12_AMD64.deb

既知の適切な構成に対して、インストールされたファイルを再テストしてチェック(debsums、sha1sum)します。

8
Maxx Daymon

apt-getリポジトリにプリコンパイル済み1.0.1g OpenSSLバージョンが含まれていない場合は、公式Webサイトからソースをダウンロードしてそれをコンパイルします。

最後のopensslバージョンをコンパイルしてインストールするための単一のコマンドラインの下。

curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz | tar xz && cd openssl-1.0.1g && Sudo ./config && Sudo make && Sudo make install

シンボリックリンクを介して、古いopensslバイナリファイルを新しいファイルに置き換えます。

Sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

あなたはすべて元気です!

# openssl version should return
openssl version
OpenSSL 1.0.1g 7 Apr 2014

Cf this ブログ投稿

NB:ブログ投稿に記載されているように、この回避策では「1.0.1gのopenSSLソースで再コンパイルする必要があるNginxおよびApacheサーバー」は修正されません。

2
KoKo

PATHにOpenSSLの2つのバージョンがある可能性があります。これは、独自のバージョンをコンパイルした場合に発生する可能性があります。

これを試して /usr/bin/openssl version

これは、OpenSSLのパッケージバージョンの位置である必要があります。

0
Peter Lamby

Libssl1.0.0を更新してから、サーバーを再起動する必要があります。再起動しないと機能しません。

0
ITProStuff