2021-05-08

GoogleAPI OAuth2.0のリダイレクトURIがhttps必須に変更されていた件

Google Cloud Platform (以前のGoogle Apps) でログイン認証のAPI OAuth2.0 を利用しています。ウェブアプリに組み込んでいるのですが、以前までAPIに必要なリダイレクトURIはSSL対応していないもの (http:// ではじまるURI) でも登録できたのですが、先日久しぶりに登録しようとするとSSL化された (https:// ではじまる) URIでないと登録できないようになっていました。今の所、古いものでもAPIは使えるようですがいつ使えなくなるか分かりません。そこで、こちらを参考にしてシステムのSSL化を行いました。(追記6/3:予想通り今年の9/13にはSSL化されていないURIは削除されるとの連絡が Google Developers から来ました。)

今回は既存の /etc/httpd/conf.d/ssl.conf ファイルを編集することにしました。SSLの証明書が発行され、関連するファイルが以下の通り置かれているとします。

  SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/server.key
  SSLCertificateChainFile /etc/httpd/conf/ssl.crt/internal.cer
  SSLCertificateFile      /etc/httpd/conf/ssl.crt/server.crt

システムのルートが /var/www/html/example にあるとして、ドメインが example.biz の場合 ssl.conf ファイルに以下の項目を追加すればOKです。

# setting for example.biz
<VirtualHost *:443>
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/server.key
  SSLCertificateChainFile /etc/httpd/conf/ssl.crt/internal.cer
  SSLCertificateFile      /etc/httpd/conf/ssl.crt/server.crt
  
  DocumentRoot /var/www/html/example
  ServerName example.biz:443
  ErrorLog /var/log/httpd/example-error_log
  CustomLog /var/log/httpd/example-access_log common
  AddDefaultCharset UTF-8
  <Directory "/var/www/html/example/">
    AllowOverride All
    Options Indexes FollowSymLinks
  </Directory>
</VirtualHost>

httpdを再起動すると、SSL化されていることを確認できます。httpからhttpsへ自動遷移させるには /etc/httpd/conf/httpd.conf の該当部分に以下の通り #Routing 以降を追加しhttpdを再起動すればOKです。

<VirtualHost *:80>
     ServerAdmin root@example.biz
     DocumentRoot /var/www/html/example
     ServerName www.example.biz
     ServerAlias example.biz
     # Routing                                                                                                     
     RewriteEngine On
     RewriteRule ^/(img|css|js|files)/(.*)$\$$ /var/www/html/example/$\$$1/$\$$2 [L]
     # RewriteCond $\%${HTTP_HOST} !^example.biz$\$$[NC]
     # RewriteRule ^/(.*)$\$$ http://example.biz/$\$$1 [R=301,L]
     RewriteCond $\%${HTTPS} off
     RewriteRule ^(.*)$\$$ https://$\%${HTTP_HOST}$\%${REQUEST_URI} [R,L]
</VirtualHost>

システムが複数ある場合も同様に ssl.conf と httpd.conf を編集すればSSL化できます。

あとはGoogle Cloud PlatformでAPI を登録するだけなのですが、以前のGoogle Appsの時とは場所が変わっているので一応メモしておきます。Google Cloud Platformにログインして

Home > Dashboard > API (APIの概要に移動)> 認証情報 > OAuth 2.0 クライアント ID

と行くと、OAuth2.0 APIの設定ができます。SSL化は時代の流れですね。社内のみで使うシステムでも今やhttpでは(セキュリティ上)良くないのでしょう。そう考えると証明書発行会社は今後も安泰でしょうね。

0 件のコメント: