nginx を使って Rustls と OpenSSL で TLS ハンドシェイクにかかる時間を計測してみたら2倍以上高速化した

メディア統括本部 サービスリライアビリティグループ(SRG)の長谷川 @rarirureluis です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事は、Rustls が nginx との互換性ができたので、OpenSSL とどちらが高速か計測してみた記事です。
 

Rustls


Rustlsは、Rust で書かれたモダンな Transport Layer Security (TLS) ライブラリです。主に安全性とパフォーマンスを重視して設計されており、OpenSSL のようなメモリ非安全な代替手段を置き換えることを目指しています。Rustls は TLS 1.2 および TLS 1.3 を実装しており、クライアントとサーバーの両方に対応しています。
 

Let’s Encrypt 認証局も移行予定らしい


ISRG's Let's Encrypt certificate authority will begin replacing OpenSSL with Rustls later this year.
 
それぐらい、Rustls は OpenSSL よりも優れているってことなんでしょうか。
 

インストール


 

Rustls + nginx で OpenSSL と比較してみる


Nginx に Rustls を組み込んで、下記のスクリプトを実行します。
  • 100回リクエスト
  • p50, p95, p99 を取得
 

nginx + OpenSSL

 

nginx + Rustls

終わりに


Rustls を nginx に組み込んで、OpenSSL との優位性について調べてみました。
ベンチマークの結果通り、どの指標においても Rustls が優れており p99 では2倍以上も高速化することができました。
 
SRG では一緒に働く仲間を募集しています。 ご興味ありましたらぜひこちらからご連絡ください。
 
このエントリーをはてなブックマークに追加