FreeBSDのOpenSSL/OpenSSHをアップグレードする

OSのアップグレードが難しい稼働中システムでOpenSSLやOpenSSHだけ どうしてもアップグレードしたい場合の手順です。

前提条件


ベースシステムのアップグレード

ソースコードのアップデート

# svnlite update /usr/src

OpenSSL

ヘッダファイルの更新

差分のあるヘッダファイルをチェックします。

#!/bin/sh

CRYPTODIR="/usr/src/crypto/openssl"
cd /usr/include/openssl
for sys in *.h
do
    if [ "$sys" = "opensslconf.h" ] ;then
        case "`uname -p`" in
        "armv6")
            sys2="opensslconf-arm.h"
            ;;
        "amd64"|"i386")
            sys2="opensslconf-x86.h"
            ;;
        "*")
            ;;
        esac
        newfull="`find /usr/src/secure/lib/libcrypto -name $sys2 -print`"
    else
        newfull="`find $CRYPTODIR -name $sys -print`"
    fi
    echo $sys
    DIFF=`diff -u $sys $newfull`
    if [ ! "X$DIFF" = "X" ]; then
        diff -u $sys $newfull
        echo "cp -p $newfull $sys"
    fi
done

差分のあるヘッダファイルをコピーします。

# cp -p /usr/src/crypto/openssl/crypto/bio/bio.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/bn/bn.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/crypto.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/dh/dh.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/pem/pem.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/pkcs12/pkcs12.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/srp/srp.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/ts/ts.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/x509/x509.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/crypto/x509/x509_vfy.h /usr/include/openssl
# cp -p /usr/src/crypto/openssl/ssl/ssl.h /usr/include/openssl

コンパイル

# cd /usr/src/secure/lib/libcrypto
# make cleandir && make obj && make depend
# make && make install
# cd /usr/src/secure/lib/libssl
# make cleandir && make obj && make depend
# make && make install
# cd /usr/src/secure/usr.bin/openssl
# make cleandir && make obj && make depend
# make && make install

OpenSSH

コンパイル

# cd /usr/src/secure/lib/libssh
# make cleandir && make obj && make depend
# make && make install
# cd /usr/src/secure/usr.sbin/sshd
# make cleandir && make obj && make depend
# make && make install
# cd /usr/src/secure/usr.bin/ssh
# make cleandir && make obj && make depend
# make && make install

portsを使ってアップグレード

/etc/make.conf

DEFAULT_VERSIONS+=ssl=openssl
# portinstall security/openssl

リンクしているパッケージをインストールし直します。