Gitクライアントを使用してBitbucketへ接続する際、HTTPSおよびクライアント証明書をご利用いただいている環境で、Gitクライアントにクライアント証明書を設定し使用する手順を説明します。
ご利用のパソコンにてコマンドラインシェルを使用しますので、Windows環境の場合はGit Bashなどをご利用ください。
ご利用の環境やバージョンにより手順や動作が異なるケースが報告されております。本ページの内容は一般的な手順としてご理解ください。
RickCloudではBitbucketに対しSSHでの接続、あるいは接続元IPアドレスによるアクセス制限の併用が可能です。これらをご利用いただく場合は本ページで説明しているクライアント証明書の設定は必要ございません。
フォーワードプロキシを使用しているお客様の環境では追加の設定が必要となる場合がございます。フォーワードプロキシに関する設定につきましては、お客様の会社のご担当者様にご確認ください。
PEM形式へ変換
お手元のクライアント証明書がPKCS12形式(拡張子がp12)の場合、Gitクライアントで使用できるようPEM形式へ変換を行います。
ご利用のパソコンにてコマンドラインシェルを開き、以下のコマンドを実行してください。
$ openssl pkcs12 -in /path/to/certificate.p12 -out /path/to/certificate.pem Enter Import Password: <クライアント証明書に設定されたパスワードを入力> MAC verified OK Enter PEM pass phrase: <任意のパスフレーズを入力> Verifying - Enter PEM pass phrase: <任意のパスフレーズを入力>
Git Bash(Git for Windows)をご利用の場合、opensslコマンド実行後にパスワード入力プロンプトが表示されない問題が報告されております。
その場合は、winptyコマンドを使用すると正常に実行できる場合がございます。
$ winpty openssl pkcs12 -in /path/to/certificate.p12 -out /path/to/certificate.pem
ご利用の環境によっては、クライアント証明書(秘密鍵)にパスフレーズが設定された状態では認証が正常に動作しないケースが報告されております。
その場合は、以下のようにパスフレーズを設定しない方法でPEM形式へ変換してお試しください。
証明書と秘密鍵を1つのファイルに保管する場合
$ openssl pkcs12 -in /path/to/certificate.p12 -out /path/to/certificate.pem -nodes
証明書と秘密鍵を別のファイルに保管する場合
$ openssl pkcs12 -in /path/to/certificate.p12 -out /path/to/certificate.crt -clcerts -nokeys # 証明書 $ openssl pkcs12 -in /path/to/certificate.p12 -out /path/to/certificate.key -nocerts -nodes # 秘密鍵
Gitクライアントにクライアント証明書を設定
ご利用のパソコンにてコマンドラインシェルを開き、以下のコマンドを実行してください。
$ git config --global http.sslCert /path/to/certificate.pem $ git config --global http.sslCertPasswordProtected true
この後 git clone コマンドなどを実行した際、システム(ご利用のCredential Helper)よりクライアント証明書のパスフレーズの入力が求められますので、PEM形式へ変換する際に設定したパスフレーズをご入力ください。パスフレーズを入力する際、Git for Windowsをご利用の場合はユーザー名の入力欄が表示される場合がございますが、ユーザー名を入力する必要はございません。
クライアント証明書のパスフレーズ入力後、Bitbucketのユーザー認証が行われますので、ご利用のBitbucketユーザー名、パスワードをご入力ください。
PEM形式へ変換する際にパスフレーズを設定しない方法を採用した場合、http.sslCertPasswordProtectedの有効化は不要です。
有効化している場合は以下のコマンドで無効化してください。
$ git config --global http.sslCertPasswordProtected false
PEM形式へ変換する際に証明書と秘密鍵を別のファイルに保管した場合は、以下のコマンドで設定してご利用ください。
$ git config --global http.sslcert /path/to/certificate.crt # 証明書 $ git config --global http.sslkey /path/to/certificate.key # 秘密鍵