インストール
こちらのopenssl-X.X.X-新しげ.pkg をインストールしてね.
暇なのでインストールできたかチェックしたい場合:
$ otool -L /usr/local/lib/libssl.dylib /usr/local/lib/libssl.dylib: /usr/local/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0) /usr/local/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1) $ /usr/local/bin/openssl version OpenSSL 1.1.1k 25 Mar 2021
ビルドするのが好きなやつ
OSX11の頃
/usr/lib/libsslはみんな消えた.どこに行ったんだろう.
$ otool -L `which openssl` /usr/lib/libssl.46.dylib (compatibility version 47.0.0, current version 47.1.0) /usr/lib/libcrypto.44.dylib (compatibility version 45.0.0, current version 45.1.0) /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent (compatibility version 1.0.0, current version 35.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)
おやあ.こいつらみんな存在しないぞ.どうなってんだ?
$ openssl version LibreSSL 2.8.3
動いているんだけどな. だがまあ,FaceIDだのTouchIDだの,セキュリティでは上を行っているAppleが,これらを使えるようにしておく可能性はないな.必要はないだろうからね.ま,互換性保持のために置いてあるだけなんだろうね.
ということはだ.逆に言えば,使いたいものをインストールしたらOSと衝突せずに使えるってわけだ.
OpenSSL1.1.1 台湾積体電路製造
X86ビルド
X86ターミナルで実行する.
cd openssl-1.1.1k/
./config no-sse2
make
make test
lipo -info lib*dylib lib*a engines/*dylib
Non-fat file: libcrypto.1.1.dylib is architecture: x86_64
Non-fat file: libcrypto.dylib is architecture: x86_64
Non-fat file: libssl.1.1.dylib is architecture: x86_64
Non-fat file: libssl.dylib is architecture: x86_64
Non-fat file: libcrypto.a is architecture: x86_64
Non-fat file: libssl.a is architecture: x86_64
Non-fat file: engines/capi.dylib is architecture: x86_64
Non-fat file: engines/dasync.dylib is architecture: x86_64
Non-fat file: engines/ossltest.dylib is architecture: x86_64
Non-fat file: engines/padlock.dylib is architecture: x86_64
そりゃおまえ,TSMCチップがX86をいくら真似てもストリーミングしむどは載ってねえからな. SSEが載ってないIntelチップは現存しないので,no-sse2を指定しないと動かないわけだ.
ARM64ビルド
ARM64ターミナルで実行する
cd openssl-1.1.1k/ ./config make make test lipo -info lib*dylib lib*a engines/*dylib Non-fat file: libcrypto.1.1.dylib is architecture: x86_64 Non-fat file: libcrypto.dylib is architecture: x86_64 Non-fat file: libssl.1.1.dylib is architecture: x86_64 Non-fat file: libssl.dylib is architecture: x86_64 Non-fat file: libcrypto.a is architecture: x86_64 Non-fat file: libssl.a is architecture: x86_64 Non-fat file: engines/capi.dylib is architecture: x86_64 Non-fat file: engines/dasync.dylib is architecture: x86_64 Non-fat file: engines/ossltest.dylib is architecture: x86_64 Non-fat file: engines/padlock.dylib is architecture: x86_64
そりゃARM64チップにストリーミングしむどが載っていそうにないことは初めからわかっているしね.ではインストールしてみる
fswatch -x /usr/local/ > files.log & sudo make install
豚ビルド
では豚に変えよう.めんどくさくなってきたので 豚専ツールを作った.
$ build_pig.sh ../../x86_64/openssl-1.1.1k/ ../../arm64/openssl-1.1.1k/ ../../arm64/universal/ lib*dylib engines/*dylib ../../x86_64/openssl-1.1.1k//libcrypto.1.1.dylib x86_64 ../../arm64/openssl-1.1.1k//libcrypto.1.1.dylib arm64 Architectures in the fat file: ../../arm64/universal//libcrypto.1.1.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//libcrypto.dylib x86_64 ../../arm64/openssl-1.1.1k//libcrypto.dylib arm64 Architectures in the fat file: ../../arm64/universal//libcrypto.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//libssl.1.1.dylib x86_64 ../../arm64/openssl-1.1.1k//libssl.1.1.dylib arm64 Architectures in the fat file: ../../arm64/universal//libssl.1.1.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//libssl.dylib x86_64 ../../arm64/openssl-1.1.1k//libssl.dylib arm64 Architectures in the fat file: ../../arm64/universal//libssl.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//engines/capi.dylib x86_64 ../../arm64/openssl-1.1.1k//engines/capi.dylib arm64 Architectures in the fat file: ../../arm64/universal//engines/capi.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//engines/dasync.dylib x86_64 ../../arm64/openssl-1.1.1k//engines/dasync.dylib arm64 Architectures in the fat file: ../../arm64/universal//engines/dasync.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//engines/ossltest.dylib x86_64 ../../arm64/openssl-1.1.1k//engines/ossltest.dylib arm64 Architectures in the fat file: ../../arm64/universal//engines/ossltest.dylib are: x86_64 arm64 ../../x86_64/openssl-1.1.1k//engines/padlock.dylib x86_64 ../../arm64/openssl-1.1.1k//engines/padlock.dylib arm64 Architectures in the fat file: ../../arm64/universal//engines/padlock.dylib are: x86_64 arm64
こりゃ楽だわ.
sudo cp ../universal/lib* /usr/local/lib/ sudo cp ../universal/engines/* /usr/local/lib/engines-1.1/ kill %1 fswatch_analyze.sh -c binary files.log pkgbuild --identifier openssl --root binary openssl-1.1.1-osx11.2.pkg
動くのか?
$ openssl version
LibreSSL 2.8.3
$ /usr/local/bin/openssl version
OpenSSL 1.1.1k 25 Mar 2021
よさげ.
OSX10の頃
暗号通信ソフトSSLである. OSXにはデフォルトでふる〜いのがインストールされている:
/usr/lib/libssl.0.9.7.dylib
/usr/lib/libssl.0.9.8.dylib (2017年ごろのデフォルト. OpenSSL-0.9.8)
/usr/lib/libssl.35.dylib (OSX10.14ではこれがデフォルト)
/usr/lib/libssl.43.dylib
/usr/lib/libssl.44.dylib
事情はよくわからないが, OpenSSLを作ってた人が2015年ごろにRSAに脱走してOpenSSLをほっといたらバグが見つかってWWWとなったらしいが. で, OpenSSLは 0.9.8 --> 1.0.01--> 1.1...... という感じで終わっとるらしい.で, 新バージョンがLibreSSLになって再登場.このlibssl.35とかは, そっちなのか?
はあ?世界中で使われている https:// のベースだろ?個人のボランティア頼みなのかマジか?と思ったが,どうやら,本当に,LinuxとAndroid携帯は全てこの人のライブラリによるものだそうだ・・・(Googleのは, この BoringSSL てやつだ)で,どうすんねん?となってOpenBSDがLibreSSLを作った.BSDなのでAppleは使えるので(MacOSとiPhone/iPadはBSDのライセンスだからな).いまんとこ,AppleだけがLibreSSLを堂々と使っている,ということか.だからopensslのヘッダーファイルが見つからない.昔作成した実行ファイルが動作するように, libssl.0.9.x.dylib だけは置いてある.というわけだ.
なんとまあ脆弱な・・・
$ otool -L `which openssl`
/usr/lib/libssl.44.dylib (ccurrent version 45.1.0)
/usr/lib/libcrypto.42.dylib (current version 43.0.0)
/usr/lib/libSystem.B.dylib (current version 1252.200.5)
$ openssl version
LibreSSL 2.6.5
ということは, LibreSSL 2.6.5 のヘッダーを使えば libssl.44.dylib が使えそうではあるけどな・・・
暗号化が破られてしまった 0.9.8 だが, ヘッダーファイルをインストールすると,利用可能になる.ヘッダーファイルだけのインストールパッケージは,ここのopenssl-0.x.x-dev.pkgである.https:// を使わないなら,これで十分だろう.
このパッケージをどうやって作ったか記録がないんだが,多分,普通にインストールしたのち, ライブラリを/usr/libにあるApple製のライブラリに変更してから,パッケージにしたのではないかな?
ヘッダーファイルではなく,ライブラリー本体(/usr/lib/libsslなんとかファイル)をインストールする?悪いことは言わないので,SSLライブラリー本体の入れ替えはやめたほうがいいと思うよ.OSを再インストールする羽目に陥るかも(二回目の経験をしたい向きは,是非どうぞ).