devlogこの広告は、90日以上更新していないブログに表示しています。自分のサイトでALPNが有効かどうかは以下の3つの方法で確認できます。Test」を使用するOpenSSLコマンドを実行する1つめ拡張機能をChromeにインストールするだけで準備OKです。ALPNが有効であり、かつHTTP/2が有効である場合はこの拡張機能の稲妻アイコンが青くなります(非対応の場合は灰色です)2つめWebサイトにアクセスしてALPN対応かどうか確認したいサイトのURLを入力して「Test」ボタンを押します。出ればALPNに対応していることがわかります。3つめopensslコマンドが使用できるマシンで以下のコマンドを実行します。example.com:443example.comの箇所を確認したいURLに置き換えます。negotiatedと表示されます。ALPNはサポートされていません。ところが、OpenSSLのバージョンがALPNに対応していても、なぜかALPN非対応と表示されてしまう問題に直面しました。Webサーバ(Nginx)を再起動してもダメでした。解決策ぼくの場合は以下の2つが原因でした。NginxがALPNに対応したOpenSSLを使用していなかったサーバ自体を再起動する必要がある1つめNginxやOpenSSLをyumやaptなどのパッケージマネージャで更新した場合は問題ないのですが、自分の場合は、NginxもOpenSSLも、ソースからダウンロードしてビルドしていたので、NginxがビルドしたOpenSSLを参照してくれていなかったのが原因でした。ソースからビルドしたNginxで、同じくソースからビルドしたOpenSSLを使用するためには、Nginxにインストールでオプションをつけて、もう一度ビルドし直す必要があります。Nginxのソースがあるディレクトリに移動して、以下のコマンドを実行します。--with-openssl=ソースからダウンロードしたOpenSSLのディレクトリのパスOpenSSLは公式サイトからtarball(.tar.gz)をダウンロードして、圧縮ファイルを展開します。その展開したディレクトリをパスとして指定します。Nginxをソースからビルドする方法については以下の記事を参考にしてください。Nginxでレスポンスヘッダの一部を隠蔽する方法これでインストールすると、指定したOpenSSLのバージョンを使ってNginxをビルドできます。それを確認するには以下のコマンドを実行します。YYYYのように、自分がダウンロードしてきたOpenSSLのバージョン(1.0.2以降)が表示されていればOKです。Apacheの場合はまた違うと思いますので、各自で調べてください。ビルドが成功したら、Nginxを再起動してください。reload2つめこれは非常に単純な話なのですが、Nginxを再起動しただけでは、OpenSSLのバージョンを変更してもそれが反映されないみたいです。OpenSSLを新しいバージョンにしたほうに反映させるコマンドがあるはずですが、自分はそれがわからなかったので、最終手段としてサーバそのものを再起動してしまいました。サーバを再起動するので、再起動後に自動起動するように設定していないデーモンプロセスを再び起動させる手間があってめんどうくさいですが、これが一番確実かと思われます。ぼくが愛用しているブログシステムであるGhost。Worldのら(noraworld)です。はてなブログ、はじめました。月別アーカイブ参加グループプログラミングテクノロジーはてなブログをはじめよう!noraworldさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。