Peringatan: Halaman ini membahas API lama Google, yaitu Google Data API; halaman ini hanya relevan dengan API yang tercantum dalam direktori Google Data API, banyak di antaranya telah diganti dengan API yang lebih baru. Untuk informasi tentang API baru tertentu, lihat dokumentasi API baru. Untuk informasi tentang memberi otorisasi permintaan dengan API baru, lihat Autentikasi dan Otorisasi Akun Google.
Dokumen ini menjelaskan cara menggunakan library klien Google Data API untuk terhubung ke AuthSub Authentication untuk Aplikasi Web Google.
Antarmuka AuthSub memungkinkan aplikasi berbasis web mengakses layanan Google atas nama pengguna. Untuk mempertahankan tingkat keamanan yang tinggi, antarmuka AuthSub memungkinkan aplikasi mendapatkan token autentikasi tanpa menangani informasi login akun pengguna.
Library klien Google Data API menyediakan metode untuk membantu Anda menggunakan AuthSub di aplikasi web Anda. Secara khusus, ada metode untuk membuat URL permintaan, memperoleh token autentikasi sekali pakai, menukar token sekali pakai dengan token sesi, dan menandatangani permintaan.
Catatan: Library klien JavaScript memiliki ragam AuthSub sendiri, yang disebut AuthSubJS. Untuk mengetahui informasi tentang cara menggunakan AuthSubJS di aplikasi JavaScript, lihat Menggunakan Autentikasi "AuthSub" dengan Library Klien JavaScript.
Audiens
Dokumen ini ditujukan bagi programmer yang ingin agar aplikasi berbasis web mereka mengakses layanan Google atas nama pengguna, menggunakan library klien Google Data API.
Dokumen ini mengasumsikan bahwa Anda telah memahami antarmuka AuthSub dan proses umum untuk memasukkan AuthSub ke dalam aplikasi web Anda. Untuk mengetahui deskripsi lengkap protokol AuthSub, lihat Autentikasi AuthSub untuk Aplikasi Web.
Menggunakan AuthSub dan Google Data API tanpa library klien
Jika Anda ingin klien aplikasi web berinteraksi dengan layanan Data Google menggunakan AuthSub sebagai sistem autentikasi, semua yang perlu Anda ketahui ada di Autentikasi AuthSub untuk Aplikasi Web. Anda tidak perlu menggunakan library klien Google Data API jika tidak menginginkannya.
Berikut adalah garis besar tentang cara aplikasi Anda mengautentikasi pengguna menggunakan AuthSub:
Aplikasi Anda membuat URL AuthSub yang sesuai, lalu mengarahkan pengguna ke URL tersebut agar mereka dapat login; sistem AuthSub mengarahkan pengguna kembali ke URL di situs yang Anda tentukan, dan menampilkan token sekali pakai; aplikasi Anda secara opsional menukar token tersebut dengan token sesi; lalu aplikasi Anda mengirimkan token tersebut di header Otorisasi dengan setiap permintaan yang dikirim aplikasi ke layanan.
Library klien Google Data API menyederhanakan proses otorisasi ini dengan menangani berbagai detail untuk Anda. Dokumen ini menjelaskan caranya.
Menggunakan AuthSub dan Google Data API: contoh library klien
Bagian ini menampilkan contoh penggunaan metode library klien Google Data API untuk mengikuti langkah-langkah yang diuraikan di bagian "Bekerja Dengan AuthSub" dari dokumentasi AuthSub.
Dalam contoh ini, kami mengintegrasikan antarmuka AuthSub ke dalam aplikasi web yang berinteraksi dengan Google Kalender (meskipun Anda tidak perlu mengetahui apa pun tentang Google Kalender untuk mengikuti contoh tersebut). Contoh ini mengasumsikan bahwa aplikasi web dihosting di example.com
.
Tentukan jenis token yang akan digunakan (session=0
atau session=1
)
Anda dapat memilih untuk menggunakan token sekali pakai (session=0
) atau token sesi (session=1
).
Dokumen ini akan menggunakan token sesi, karena lebih berguna dalam aplikasi yang akan membuat beberapa permintaan API.
Seperti yang dibahas dalam dokumentasi AuthSub, jika memutuskan untuk menggunakan token sesi di aplikasi web, Anda harus mengelola penyimpanan token sendiri. Dokumen ini tidak mencakup pengelolaan token. Perlu diketahui juga bahwa token yang diminta dengan session=0
nantinya tidak dapat ditukarkan (diupgrade) ke token sesi yang berumur panjang.
Tentukan apakah akan mendaftarkan aplikasi web (secure=0
atau secure=1
)
AuthSub dapat digunakan dalam tiga mode yang berbeda, tidak terdaftar, terdaftar, dan terdaftar dengan keamanan yang ditingkatkan. Sisa dokumen ini akan merujuk ke opsi terakhir sebagai AuthSub aman. Meskipun mode tidak terdaftar/terdaftar lebih mudah disiapkan daripada AuthSub yang aman, Google mendorong Anda untuk menggunakan token aman untuk meningkatkan keamanannya.
Cara mendaftar
Memilih Pendaftaran untuk Aplikasi Berbasis Web akan memberi aplikasi Anda manfaat berikut:
- Tingkat keamanan yang lebih tinggi.
- Dipercaya oleh Google (tidak ada peringatan yang ditampilkan kepada pengguna di halaman Otorisasi Google).
AuthSub Terdaftar + Aman AuthSub
Jika memutuskan untuk mengautentikasi AuthSub yang aman, Anda harus membuat pasangan kunci pribadi RSA dan sertifikat publik yang ditandatangani sendiri selain mendaftarkan aplikasi web Anda. Lihat Membuat kunci dan sertifikat untuk digunakan dengan mode terdaftar (di bawah) untuk mengetahui contoh pembuatan sertifikat X.509.
Menentukan cakupan akses data
Setiap layanan Google menentukan nilai scope
yang menentukan (dan mungkin mempersempit) akses token ke data pengguna.
Lihat FAQ untuk mengetahui daftar nilai scope
yang tersedia.
Karena kami memutuskan untuk berinteraksi dengan Google Calendar API, scope
harus berupa
http://www.google.com/calendar/feeds/
.
Catatan: Selalu tetapkan nilai cakupan ke URL seluas mungkin kecuali jika Anda memerlukan pembatasan yang lebih ketat.
Misalnya, cakupan yang lebih sempit seperti scope=http://www.google.com/calendar/feeds/default/allcalendars/full
akan membatasi akses token ke hanya semua kalender/feed penuh. Penggunaan scope=http://www.google.com/calendar/feeds/
akan mengizinkan akses ke semua feed Kalender: http://www.google.com/calendar/feeds/*.
Token multi-cakupan
Untuk membuat token yang mengakses beberapa Google Data API, pisahkan setiap cakupan dengan ruang berenkode URL. Contoh di bawah membuat token, yang akan memiliki akses ke data Google Kontak dan Google Kalender pengguna.
scope=http://www.google.com/calendar/feeds/%20http://www.google.com/m8/feeds/
Meminta token autentikasi sekali pakai
Untuk mendapatkan token AuthSub bagi pengguna dan layanan tertentu, aplikasi Anda harus mengalihkan pengguna ke URL AuthSubRequest
, yang meminta mereka untuk login ke Akun Google miliknya.
(Untuk informasi selengkapnya terkait URL AuthSubRequest
, lihat Autentikasi AuthSub untuk Aplikasi Web.)
Untuk membuat URL AuthSubRequest
di aplikasi Anda, gunakan hal berikut untuk setiap library klien:
Java
import com.google.gdata.client.*; String nextUrl = "http://www.example.com/RetrieveToken.jsp"; String scope = "http://www.google.com/calendar/feeds/"; boolean secure = false; // set secure=true to request secure AuthSub tokens boolean session = true; String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);
Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:
import com.google.gdata.client.*; String hostedDomain = "example.com"; String nextUrl = "http://www.example.com/RetrieveToken.jsp"; String scope = "http://www.google.com/calendar/feeds/"; boolean secure = false; // set secure=true to request AuthSub tokens boolean session = true; String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);
.NET
using Google.GData.Client; String nextUrl = "http://www.example.com/RetrieveToken.aspx"; String scope = "http://www.google.com/calendar/feeds/"; bool secure = false; // set secure=true to request secure AuthSub tokens bool session = true; String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);
Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:
using Google.GData.Client; String hostedDomain = "example.com"; String nextUrl = "http://www.example.com/RetrieveToken.aspx"; String scope = "http://www.google.com/calendar/feeds/"; bool secure = false; // set secure=true to request secure AuthSub tokens bool session = true; String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);
PHP
require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_AuthSub'); $nextUrl = 'http://www.example.com/RetrieveToken.php'; $scope = 'http://www.google.com/calendar/feeds/'; $secure = 0; // set $secure=1 to request secure AuthSub tokens $session = 1; $authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session);
Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:
require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_AuthSub'); $hostedDomain = 'example.com'; $nextUrl = 'http://www.example.com/RetrieveToken.php'; $scope = 'http://www.google.com/calendar/feeds/'; $secure = 0; // set $secure=1 to request secure AuthSub tokens $session = 1; $authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session) . '&hd=' . $hostedDomain;
Python
import gdata.auth next = 'http://www.example.com/RetrieveToken.pyc' scope = 'http://www.google.com/calendar/feeds/' secure = False # set secure=True to request secure AuthSub tokens session = True auth_sub_url = gdata.auth.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session)
Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:
import gdata.auth hosted_domain = 'example.com' next = 'http://www.example.com/RetrieveToken.pyc' scope = 'http://www.google.com/calendar/feeds/' secure = False # set secure=True to request secure AuthSub tokens session = True auth_sub_url = gdata.auth.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session, domain=hosted_domain)
Setelah membuat URL "berikutnya", aplikasi Anda dapat menggunakannya dalam berbagai cara untuk mengarahkan pengguna ke pengendali AuthSubRequest
. Pendekatan yang paling umum adalah menampilkan halaman yang memberi tahu pengguna bahwa mereka perlu mengikuti link untuk
memberi otorisasi aplikasi Anda agar dapat mengakses Akun Google mereka; lalu melampirkan URL permintaan ke link tersebut. Misalnya, Anda dapat membuat string berikut di aplikasi web:
String authorizationUrl = "<p>MyApp needs access to your Google Calendar account to read your Calendar feed. " + "To authorize MyApp to access your account, <a href=\"" + authSubUrl + "\">log in to your account</a>.</p>";
Pengguna mengikuti link ke halaman AuthSub di Google, dan login. Sistem AuthSub kemudian mengalihkan pengguna kembali ke aplikasi Anda menggunakan URL "berikutnya" yang Anda berikan.
Mengekstrak token sekali pakai
Saat Google mengalihkan kembali ke aplikasi Anda, token akan ditambahkan ke URL "berikutnya" sebagai parameter kueri. Pada contoh di atas, setelah pengguna login, Google akan mengalihkan ke URL seperti http://www.example.com/RetrieveToken?token=DQAADKEDE
.
Aplikasi Anda harus mengekstrak nilai token dari parameter kueri URL-nya.
Jika aplikasi Anda menetapkan cookie autentikasi di browser pengguna sebelum mengirimkannya ke sistem AuthSub, lalu saat Google mengalihkan kembali ke URL "berikutnya", aplikasi Anda dapat membaca cookie autentikasi untuk mengenali pengguna mana yang telah tiba di URL tersebut. Anda dapat menggunakan cookie tersebut untuk mengaitkan User-ID di aplikasi Anda dengan token AuthSub yang diambil dari Google.
Library klien menyediakan metode praktis untuk mengekstrak token sekali pakai:
Java
String singleUseToken = AuthSubUtil.getTokenFromReply(httpServletRequest.getQueryString());
.NET
String singleUseToken = Request.QueryString["token"]; // or String singleUseToken = AuthSubUtil.getTokenFromReply(new Uri(Request.QueryString));
PHP
$singleUseToken = $_GET['token'];
Python
current_url = 'http://' + req.hostname + req.unparsed_uri # Unlike the other calls, extract_auth_sub_token_from_url() will create anAuthSubToken
orSecureAuthSubToken
object. # Use str(single_use_token) to return the token's string value. single_use_token = gdata.auth.extract_auth_sub_token_from_url(current_url)
Jika menggunakan AuthSub yang aman, pastikan Anda menyetel kunci pribadi RSA agar SecureAuthSubToken
dibuat:
f = open('/path/to/yourRSAPrivateKey.pem') rsa_key = f.read() f.close() current_url = 'http://' + req.hostname + req.unparsed_uri # Unlike the other calls, extract_auth_sub_token_from_url() will create anAuthSubToken
orSecureAuthSubToken
object. # Use str(single_use_token) to return the token's string value. single_use_token = gdata.auth.extract_auth_sub_token_from_url(current_url, rsa_key=rsa_key)
Meminta token sesi
Token yang Anda ambil dari URL selalu merupakan token sekali pakai. Langkah selanjutnya adalah mengupgrade token tersebut untuk token sesi yang tahan lama menggunakan URL AuthSubSessionToken
, seperti yang dijelaskan dalam dokumentasi lengkap AuthSub Authentication untuk Aplikasi Web. Jika menggunakan AuthSub yang aman, Anda harus menyetel kunci pribadi RSA sebelum melakukan pertukaran. Berikut adalah beberapa contoh yang menggunakan setiap library klien:
Java
import com.google.gdata.client.*; import com.google.gdata.client.calendar.*; String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, null); CalendarService calendarService = new CalendarService("google-ExampleApp-v1.0"); calendarService.setAuthSubToken(sessionToken, null); // ready to interact with Calendar feeds
Untuk AuthSub yang aman, teruskan kunci pribadi RSA Anda ke exchangeForSessionToken
, bukan memasukkan null
:
import com.google.gdata.client.*; import com.google.gdata.client.calendar.*; java.security.PrivateKey privateKey = AuthSubUtil.getPrivateKeyFromKeystore("AuthSubExample.jks", "privKeyPa$$word", "AuthSubExample", "privKeyPa$$word"); String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, privateKey); CalendarService calendarService = new CalendarService("google-ExampleApp-v1.0"); calendarService.setAuthSubToken(sessionToken, privateKey); // ready to interact with Calendar feeds
.NET
using Google.GData.Client; using Google.GData.Calendar; String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, null).ToString(); GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "google-ExampleApp-v1.0"); authFactory.Token = (String) sessionToken; CalendarService calendarService = new CalendarService(authFactory.ApplicationName); calendarService.RequestFactory = authFactory; // ready to interact with Calendar feeds
Untuk AuthSub yang aman, teruskan kunci pribadi RSA Anda ke exchangeForSessionToken
, bukan memasukkan null
:
using Google.GData.Client; using Google.GData.Calendar; protected AsymmetricAlgorithm getRsaKey() { X509Certificate2 cert = new X509Certificate2("C:/MyAspSite/test_cert.pfx", "privKeyPa$$word"); RSACryptoServiceProvider privateKey = cert.PrivateKey as RSACryptoServiceProvider; return privateKey; } AsymmetricAlgorithm rsaKey = getRsaKey(); String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, rsaKey).ToString(); GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "google-ExampleApp-v1.0"); authFactory.Token = (String) sessionToken; authFactory.PrivateKey = rsaKey; CalendarService calendarService = new CalendarService(authFactory.ApplicationName); calendarService.RequestFactory = authFactory; // ready to interact with Calendar feeds
PHP
require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_AuthSub'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); $sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken); // Create a Calendar service object and set the session token for subsequent requests $calendarService = new Zend_Gdata_Calendar(null, 'google-ExampleApp-v1.0'); $calendarService->setAuthSubToken($sessionToken); // ready to interact with Calendar feeds
Untuk AuthSub yang aman, bursa mengharuskan Anda menyiapkan Zend_Gdata_HttpClient
terlebih dahulu dan menyetel kunci pribadi RSA
menggunakan setAuthSubPrivateKeyFile()
:
require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_AuthSub'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); $client = new Zend_Gdata_HttpClient(); $client->setAuthSubPrivateKeyFile('/path/to/myrsakey.pem', null, true); $sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken, $client); $calendarService = new Zend_Gdata_Calendar($client, 'google-ExampleApp-v1.0'); $calendarService->setAuthSubToken($sessionToken); // ready to interact with Calendar feeds
Python
import gdata.calendar import gdata.calendar.service calendar_service = gdata.calendar.service.CalendarService() calendar_service.UpgradeToSessionToken(single_use_token) # calls gdata.service.SetAuthSubToken() for you # ready to interact with Calendar feeds
Catatan: Prosesnya sama untuk AuthSub yang aman selama Anda telah menggunakan gdata.auth.extract_auth_sub_token_from_url(url, rsa_key=rsa_key)
untuk mengekstrak token sekali pakai.
Catatan: Saat menggunakan AuthSub yang aman, kunci pribadi Anda tidak akan dikirim melalui jaringan. Library klien mengirimkan tanda tangan unik yang dihasilkan dengan menandatangani permintaan menggunakan kunci Anda, bukan kunci itu sendiri.
Menggunakan token sesi
Anda dapat menggunakan token sesi untuk mengautentikasi permintaan ke server dengan menempatkan token dalam header Authorization, seperti yang dijelaskan dalam dokumentasi AuthSub.
Setelah menetapkan token sesi, Anda dapat menggunakan panggilan library klien Google Data API standar untuk berinteraksi dengan layanan, tanpa harus memikirkan token. Untuk mengetahui detailnya, lihat dokumentasi library klien dan panduan developer Google Data API untuk layanan dan bahasa yang berinteraksi dengan Anda.
Mengambil informasi tentang token sesi
Jika ingin menguji apakah klien dan server menyetujui parameter token, Anda dapat meneruskan token ke pengendali AuthSubTokenInfo
, yang menampilkan kumpulan pasangan nilai nama yang berisi informasi tentang token tersebut.
Java
Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, null);
Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:
Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, privateKey);
.NET
Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, null);
Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:
Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, privateKey);
PHP
$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken);
Jika Anda menggunakan AuthSub yang aman, teruskan Zend_Gdata_HttpClient
Anda agar permintaan ditandatangani dengan kunci pribadi RSA Anda:
$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken, $client);
Python
token_info = calendar_service.AuthSubTokenInfo()
Mencabut token sesi
Token sesi AuthSub tidak memiliki akhir masa berlaku; klien Anda dapat menyimpan token sesi selama yang diperlukan.
Oleh karena itu, ketika klien Anda selesai menggunakan token sesi, token dapat dicabut menggunakan pengendali AuthSubRevokeToken
, seperti yang dijelaskan dalam dokumentasi AuthSub.
Misalnya, jika Anda ingin mengelola token dengan cara seperti sesi tradisional, klien Anda bisa mendapatkan token di awal sesi pengguna dan mencabutnya di akhir sesi pengguna.
Untuk mencabut token, gunakan yang berikut di setiap library klien:
Java
AuthSubUtil.revokeToken(sessionToken, null);
Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:
AuthSubUtil.revokeToken(sessionToken, privateKey);
.NET
AuthSubUtil.revokeToken(sessionToken, null);
Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:
AuthSubUtil.revokeToken(sessionToken, privateKey);
PHP
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken);
Jika Anda menggunakan AuthSub yang aman, teruskan Zend_Gdata_HttpClient
Anda agar permintaan ditandatangani dengan kunci pribadi RSA Anda:
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);
Python
calendar_service.RevokeAuthSubToken()
Referensi dan Contoh Tambahan
- Contoh AuthSub di Blog Tips Google Data API
- Library klien Python Contoh AuthSub
- Library klien Java contoh AuthSub
- Artikel: Menggunakan AuthSub dengan .NET Client Library
- Artikel: Menggunakan Autentikasi "AuthSub" dengan Library Klien JavaScript
Membuat kunci pribadi dan sertifikat publik yang ditandatangani sendiri untuk digunakan dengan AuthSub yang aman
Kunci pribadi digunakan untuk membuat tanda tangan, yang harus disertakan pada setiap permintaan. Kunci publik yang disematkan dalam sertifikat digunakan oleh Google untuk memverifikasi tanda tangan. Kunci publik harus berupa kunci RSA 1024-bit yang dienkode dalam sertifikat X.509 dalam format PEM. Sertifikat harus dikirimkan ke Google pada saat pendaftaran.
Bagian berikut memberikan contoh cara membuat kunci dan sertifikat menggunakan dua alat tertentu: utilitas OpenSSL
dan utilitas keytool
Java.
Contoh ini tidak khusus untuk Google Data API; Anda dapat menggunakan aplikasi utilitas yang sama untuk membuat kunci untuk tujuan apa pun.
Contoh ini mengasumsikan bahwa perusahaan Anda bernama My_Company, dan berlokasi di Mountain View, California, AS, dengan nama domain example.com.
Membuat kunci menggunakan OpenSSL
Untuk membuat pasangan kunci RSA dan sertifikat yang sesuai, Anda dapat menggunakan perintah berikut:
# Generate the RSA keys and certificate openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj \ '/C=US/ST=CA/L=Mountain View/CN=www.example.com' -keyout \ myrsakey.pem -out /tmp/myrsacert.pem
Peringatan: Menyertakan parameter -nodes
akan membuat kunci pribadi tanpa sandi untuk melindunginya.
Namun, Anda harus mempertimbangkan penghapusan parameter ini untuk keamanan tambahan.
Parameter -sha1
menentukan bahwa kunci tersebut akan digunakan untuk membuat tanda tangan SHA1.
Parameter -subj
menentukan identitas aplikasi yang diwakili oleh sertifikat.
Parameter -keyout
menentukan file yang akan berisi kunci.
File ini berisi informasi sensitif dan harus dilindungi serta tidak dibagikan kepada siapa pun.
Parameter -out
menentukan file yang akan berisi sertifikat dalam format PEM (yang dapat dikirim ke Google saat mendaftar).
Membuat kunci untuk klien .NET
Framework .NET tidak memahami kunci atau sertifikat yang disimpan dalam format PEM. Oleh karena itu, langkah tambahan diperlukan setelah Anda membuat file .pem:
openssl pkcs12 -export -in test_cert.pem -inkey myrsacert.pem -out myrsacert.pfx -name "Testing Certificate"
Langkah ini akan membuat file PFX dari kunci pribadi dan sertifikat Anda. File ini dapat diimpor ke library klien .NET untuk menandatangani permintaan yang dibuat ke Google Data API secara digital.
Membuat kunci untuk klien Java
Klien Java menerima kunci pribadi dalam format PKCS#8. Setelah membuat kunci/sertifikat menggunakan petunjuk di atas, buat file .pk8 dari file .pem yang dihasilkan:
openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8
Atau, Anda dapat menggunakan key store Java dan utilitas keytool untuk membuat sepasang kunci RSA dan sertifikat yang sesuai. Gunakan perintah berikut:
# Generate the RSA keys and certificate keytool -genkey -v -alias Example -keystore ./Example.jks\ -keyalg RSA -sigalg SHA1withRSA\ -dname "CN=www.example.com, OU=Engineering, O=My_Company, L=Mountain View, ST=CA, C=US"\ -storepass changeme -keypass changeme
Peringatan: "changeme
" bukan sandi yang baik; ini hanyalah contoh.
Parameter -dname
menentukan identitas aplikasi yang diwakili oleh sertifikat. Parameter -storepass
menentukan sandi untuk melindungi keystore. Parameter -keypass
menentukan sandi untuk melindungi kunci pribadi.
Untuk menulis sertifikat ke file yang dapat digunakan di alat ManageDomains, gunakan perintah berikut:
# Output the public certificate to a file keytool -export -rfc -keystore ./Example.jks -storepass changeme \ -alias Example -file mycert.pem