Google Workspace または Google Workspace for Education のお客様は、Google Workspace のシングル サインオン(SSO) サービスをご利用いただけます。Google Workspace のシングル サインオン サービスは、RSA または DSA のアルゴリズムを使って生成された公開 鍵と証明書を採用しています。このサービスを利用するには、秘密鍵と公開鍵のペア、および公開鍵を含む X.509 証明書を生成する必要があり、 公開鍵または証明書を取得したら、Google に登録する必要があります。登録するには、Google 管理コンソールから鍵や証明書をアップロードします。
鍵や証明書の生成方法は開発プラットフォームやプログラム言語によって異なることが一般的ですが、 Google Workspace SSO サービスに必要な鍵と証明書を生成する方法はいくつかあります。
OpenSSL を使用する
公開鍵と秘密鍵のペアを生成する方法は多数ありますが、オープンソースの OpenSSL ツールを使用するのが最も一般的です。OpenSSL はすべての主要プラットフォームに組み込まれており、シンプルなコマンドライン インターフェースで鍵を生成できます。
RSA 秘密鍵を生成する
OpenSSL の次のコマンドを実行するだけで RSA 秘密鍵を生成できます。
openssl genrsa -out rsaprivkey.pem 2048
このコマンドを実行すると PEM 形式にエンコードされた秘密鍵が生成され、rsaprivkey.pem ファイルに保存されます。この例では、ほとんどの用途に適した 2, 048 ビットの鍵が作成されます。生成された秘密鍵は非公開のままにし、データへの署名やデータの復号に使用します。
Java ベースのプラットフォームをご利用の場合など、一部の環境下では DER や PKCS8 形式の鍵が必要になる場合があります。これらの形式の鍵は、たとえば次の手順で生成できます。
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
手順 1 で、DER 形式の公開鍵が生成されます。
手順 2 で、
pkcs8 形式および DER 形式の秘密鍵が生成されます。生成された鍵(rsapubkey.der と rsaprivkey.der)を使用できます。
DSA 秘密鍵を生成する
DSA 鍵を生成するには次の 2 つの手順を実施します。
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
手順 1 で、DSA のパラメータ ファイル dsaparam.pem が生成されます。手順 2 の OpenSSL コマンドでこのファイルを指定することで、2,048 ビットの鍵が生成されます。なお、dsaparam.pem ファイル自体は鍵ではないため、公開鍵と秘密鍵を生成したら破棄して構いません。2 つ目の手順で、秘密鍵が dsaprivkey.pem ファイルに作成されます。このファイルは非公開のままにしてください。
鍵を DER(バイナリ)形式で書き出すには、次の手順を実施します。
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
手順 1 で、公開鍵が DER 形式で書き出されます。
手順 2 で、秘密鍵が
pkcs8 および DER 形式に変換されます。この手順を完了したら、この公開鍵(dsapubkey.der)と秘密鍵(dsaprivkey.der)のペアをご利用いただけます。
証明書を生成する
鍵のペアを生成し終えたら、X.509 証明書を生成します。証明書の生成は簡単です。証明書には、対応する公開鍵とともに、証明書を生成した組織に関するメタデータが含まれています。RSA または DSA の秘密鍵から自己署名証明書を生成するには、次の手順を実施してください。
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
いくつかの質問に答えると、証明書が作成され、dsacert.pem として保存されます。SSO の設定時に、このファイルをコントロール パネルから Google Workspace にアップロードしてください。
証明書フィンガープリントを作成する
一部のアプリケーションでは、X.509 証明書そのものではなく、X.509 証明書のフィンガープリントが必要です。フィンガープリントは、バイナリ形式の x509 証明書のダイジェストです。フィンガープリントの形式は、フィンガープリントの生成に使用されるアルゴリズム(SHA-1、SHA-256 など)によって異なります。
X.509 証明書から SHA-256 のフィンガープリントを作成するには、次のコマンドを使用します。.pem ファイルのファイル名は、実際の証明書のファイル名に置き換えてください。
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Microsoft Visual Studio for .NET を使用する
Microsoft Visual Studio 2005 のユーティリティ(Common7ToolsBin ディレクトリにあります)を使って、Google Workspace で利用する証明書を生成できます。.NET で公開鍵と秘密鍵のペアおよび証明書を生成するには、次の手順を実施します。
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cerpvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
上記のコマンドでは、デフォルトで RSA アルゴリズムが使用されます。手順 1 で
Certificate
Creation ツール
(makecert.exe) が起動し、自己署名 X.509 証明書と対応する秘密鍵が生成されます。testcert.cer
手順 2 で
pvk2pfx
ツール(pvk2pfx.exe)が起動し、
CER および PVK ファイルから Personal Information Exchange(PFX)ファイルが生成されます。PFX には、公開鍵と秘密鍵の両方が含まれています。
手順 1 で生成された testcert.cer ファイルは、コントロール パネルから Google Workspace にアップロードします。手順 2 で生成された testcert.pfx ファイルは、SAML レスポンスの署名に必要な X509Certificate2(.NET 2.0 以降)インスタンスを生成するのに使用します。
Java で keytool を使用する
Java デベロッパーは、標準の JDK に含まれる keytool ユーティリティを使用して、公開鍵と秘密鍵のペアおよび X.509 証明書を生成できます。keytool は鍵と証明書を管理するユーティリティで、デジタル署名が必要な認証スキームで使用する各自の公開鍵と秘密鍵のペアおよび対応する証明書を管理するのに利用できます。keytool は、鍵と証明書を
「キーストア」(デフォルトではユーザーのホーム ディレクトリにあるファイル(.keystore))に保存します。秘密鍵はパスワードで保護されます。
DSA 鍵のペアを生成する
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
手順 1 のコマンドで、DSA アルゴリズムで公開鍵と秘密鍵のペア(サイズ 2,048 ビット、有効期間 180 日)が生成されます。
手順 2 で、公開鍵から X.509 証明書(dsasso.cer)が生成されます。生成された dsasso.cer を、コントロール パネルから Google Workspace にアップロードしてください。
RSA 鍵のペアを生成する
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
手順 1 のコマンドで、RSA アルゴリズムで公開鍵と秘密鍵のペア(サイズ 2,048 ビット、有効期間 180 日)が生成されます。
手順 2 で、公開鍵から X.509 証明書(rsasso.cer)が生成されます。生成された
を
アップロード
rsasso.cer、コントロール パネルから Google Workspace にアップロードしてください。
Java 暗号化アーキテクチャを使用する
Java 暗号化アーキテクチャ(JCA)には、セキュリティ プロパティを生成、操作するうえで中核となるクラスやインターフェースが含まれ、暗号化関連の Java 2 SDK Security API が提供されています。この API を使用すると、目的のアルゴリズムで公開鍵と秘密鍵のペアを簡単に生成できます。以下に、Google Workspace SSO サービスで使用する DSA 鍵または RSA 鍵を作成するサンプルコードを示します。
公開鍵と秘密鍵のペアを生成する
import java.io.*;
import java.security.*;
public class KeyGenDSA {
public static void main(String[] args) {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = SecureRandom.getInstanceStrong();
keyGen.initialize(2048, random);
KeyPair pair = keyGen.generateKeyPair();
PrivateKey priv = pair.getPrivate();
PublicKey pub = pair.getPublic();
byte[] encPriv = priv.getEncoded();
FileOutputStream privfos = new FileOutputStream("DSAPrivateKey.key");
privfos.write(encPriv);
privfos.close();
byte[] encPub = pub.getEncoded();
FileOutputStream pubfos = new FileOutputStream("DSAPublicKey.key");
pubfos.write(encPub);
pubfos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上記のコードでは、KeyPairGenerator を使用して DSA 鍵のペアを作成します。生成された鍵はバイナリ形式で、個々のファイルに出力されます。
鍵を取得したら、公開鍵を Google Workspace に登録し、秘密鍵を使用して SAMLResponse に署名できます。DSA ではなく RSA の鍵ペアを生成するには、コード内の
"DSA" を "RSA" に置き換えるだけです。
証明書または公開鍵を Google Workspace に登録する
鍵と証明書の生成手順は少し複雑でしたが、あとは簡単です。Google Workspace で証明書または公開鍵を登録するには、管理 コンソールにアクセスし、管理者としてログインします。 [**セキュリティ**]、[**シングル サインオン(SSO)の設定**] の順に選択し、 [**サードパーティの ID プロバイダで SSO を設定する**] のすべての欄を入力します。