-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_ProxySettings
Linux環境でプロキシを設定する方法。
通常プロキシを導入している場合、
-
プロキシURLの設定方法に付いて
- http://proxy.example.com:8080
- http://
<HOSTNAME>:<PORTNUMBER>
-
具体的な設定場所については後述。
認証プロキシを導入している場合、
-
プロキシURLの設定方法に付いて
- http://userid:password@proxy.example.com:8080
- http://
<USERID>:<PASSWORD>@<HOSTNAME>:<PORTNUMBER>
※
<USERID>や<PASSWORD>に @ や : などの記号が含まれる場合は、URLエンコードが必要。 -
具体的な設定場所については後述。
SSLフォワード・プロキシを導入している場合、
-
SSLフォワード・プロキシが配布する証明書を指定する必要がある。
-
復号化とパススルーが混在する場合は、既存証明書に証明書をバンドルする必要がある。
-
ディストリビューション毎に、CA証明書バンドル(.pem)のファイルパスがある。
- CA証明書バンドル(.pem)を管理ツールが証明書ディレクトリ内の各証明書(.crt)から生成
- 各証明書ファイル(.crt)を所定の証明書ディレクトリに配置し、管理ツールを実行
-
Ubuntuでの手順
-
SSLフォワード・プロキシの証明書を適切なディレクトリにコピー
sudo cp server-cert.pem /usr/local/share/ca-certificates/server-cert.crt -
証明書ストアを更新、/ca-certificates/ の証明書を /etc/ssl/certs/ に統合。
$ sudo update-ca-certificates Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. -
証明書ストアの確認、証明書ファイル名やそのハッシュ値に基づくリンクが表示される
ls /etc/ssl/certs | grep server-cert
-
- 認証機能を持った、Webプロキシキャッシュサーバ
- 認証プロキシを通常のプロキシと同様の設定でバイパスできる。
- SSLフォワード・プロキシとしての機能もある。
-
プロキシ
“システム環境設定” → “ネットワーク” → ネットワークデバイス → “詳細...” → “プロキシ” → “構成するプロトコルを選択:” -
証明書ストア
システム全体またはユーザーレベルでの証明書を管理するために、システム キーチェーン、ログイン キーチェーン、など複数のキーチェーンがある。
-
プロキシ
- GNOME:[設定] → [ネットワーク] → [ネットワークプロキシ]
- KDE:[システム設定] → [ネットワーク] → [接続] → [プロキシ]
-
証明書ストア
- GNOME Keyring(gnome-keyring-daemon)
- KDE Wallet Manager(KWallet)
※ システム全体のCA証明書バンドルとは別のユーザー向けの証明書ストア
シェル単位・ユーザー単位でプロキシ設定する最も一般的な方法
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
export ftp_proxy=http://proxy.example.com:8080
export no_proxy=localhost,127.0.0.1,.example.com
-
bash(~/.bashrc または ~/.bash_profile) に記述:
echo 'export http_proxy=http://proxy.example.com:8080' >> ~/.bashrc echo 'export https_proxy=http://proxy.example.com:8080' >> ~/.bashrc echo 'export no_proxy=localhost,127.0.0.1,.example.com' >> ~/.bashrc -
その後、反映:
source ~/.bashrc -
参考:環境変数の設定方法 > 汎用的な設定ファイル(環境変数の設定方法の該当節を参照)
以下は、ツールごとの話。
sh や bash、ksh など。
export http_proxy="http://proxy.example.com:8080"
export https_proxy=$http_proxy
csh や tcshなど、レガシー環境の場合
setenv http_proxy "http://proxy.example.com:8080"
setenv https_proxy $http_proxy
-
メイン設定ファイルを使用する例
-
*.conf
sudo vi /etc/apt/apt.conf -
設定
Acquire::http::proxy "http://proxy.example.com:8080"; Acquire::https::proxy "http://proxy.example.com:8080";
-
-
設定ディレクトリ内の個別ファイルを使用する例
sudo tee /etc/apt/apt.conf.d/95proxies <<EOF Acquire::http::proxy "http://proxy.example.com:8080"; Acquire::https::proxy "http://proxy.example.com:8080"; EOF
-
*.conf
sudo vi /etc/yum.conf -
設定
proxy=http://proxy.example.com:8080 proxy_username=<USERID> proxy_password=<PASSWORD>
Webブラウザの種類やデスクトップ環境(GNOME, KDEなど)によって異なる。
(w3m, lynx, curl, wget)
- 基本的に、環境変数を使用する。
- ツール毎にI/Fを持っていることも。
(Firefox, Chromium, Chrome)
-
FirefoxはOSの環境変数を参照しないためGUIから手動設定が必要
-
Chrome/Chromium
- プロキシ設定をシステム設定(GNOMEやKDEの設定)に依存
- Chrome のコマンドラインで直接指定(プロキシ自動設定など)
個別に調査すべし。
基本的に、環境変数を使用するが、ツール毎に専用の設定I/Fがあるものもある。
-
CLI:
- curl、wget、git
- pip、npm / yarn
- docker CLI、AWS CLI、Azure CLI、Google Cloud SDK
-
プログラミング言語の標準ライブラリ
- Python:requests, urllib
- Node.js:http / https
- Java:JVM
- Ruby:open-uri
- Go:net/http
-
OSの証明書ストアとは別の証明書を使用するランタイムもある。
- Python(requests / urllib3):certifi(Pythonの該当節を参照)
- Node.js:Node.js 組み込みの CA ストア
- Java (JVM系全般):cacerts(JKS形式のキーストア)
- Rust(reqwest等):独自のバンドル or rustls のビルトイン証明書
- Go (net/http):Goランタイムに依存
-
アプリケーション毎の設定方法の例
-
curlで特定の証明書を使用する場合、
curl --cacert /path/to/server-cert.pem https://your-server.com -
wgetで特定の証明書を使用する場合、
wget --ca-certificate=/path/to/server-cert.pem https://your-server.com -
Javaアプリケーションの場合はcacerts(JKS形式のキーストア)を使用
sudo keytool -import -trustcacerts -file server-cert.pem -keystore /path/to/java/lib/security/cacerts -alias server-cert
-
-
アプリケーション毎の設定でバンドルを使う場合(Pythonの該当節を参照)
WSL2上のUbuntuの手順
-
以下に追記
sudo vi /etc/apt/apt.conf -
以下を追記
Acquire::http::proxy "http://@を%40にエスケープしたメールアドレス:パスワード@プロキシURL:8080/"; Acquire::https::proxy "http://@を%40にエスケープしたメールアドレス:パスワード@プロキシURL:8080/";
※ アカウントがメアドのケースで、ポート番号が8080の場合(笑)
環境変数の設定方法を参考に、ユーザー単位で .bashrc に追加する。
echo 'export http_proxy="http://@を%40にエスケープしたメールアドレス:パスワード@プロキシURL:8080/"' >> ~/.bashrc
echo 'export https_proxy="http://@を%40にエスケープしたメールアドレス:パスワード@プロキシURL:8080/"' >> ~/.bashrc
echo 'export HTTP_PROXY="http://@を%40にエスケープしたメールアドレス:パスワード@プロキシURL:8080/"' >> ~/.bashrc
echo 'export HTTPS_PROXY="http://@を%40にエスケープしたメールアドレス:パスワード@プロキシURL:8080/"' >> ~/.bashrc
source ~/.bashrc
※ アカウントがメアドのケースで、ポート番号が8080の場合(笑)
※ .bashrcに追記って何処に書くの?って思ってたケド、「>>」なのでアペンド。末尾に改行入ってないケースだと問題起こす。
※ 環境変数の大文字・小文字は区別され、ツールによっては大文字・小文字を参照するため。
復号中継「&パススルー機能付きの」プロキシを経由する場合で、xxxxx.cerはPEM形式である前提で。
-
証明書を適切なディレクトリにコピー
sudo cp /mnt/c/xxxxx.cer /usr/local/share/ca-certificates/server-cert.crt -
証明書ストアを更新
$ sudo update-ca-certificates Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. -
証明書ストアの確認
ls /etc/ssl/certs | grep server-cert
Pythonの該当節を参照。
-
apt のプロキシ対応 #Ubuntu
https://qiita.com/m-tmatma/items/e3d9de76be50763ac01csudo nano /etc/apt/apt.conf で Acquire::http::Proxy, Acquire::https::Proxy を設定するのが楽。
-
独自 root CA 証明書のインストール方法 (Ubuntu) #ca-certificates
https://qiita.com/matarillo/items/c04d8afd09eada27a2b2
プロキシの設定方法(マイクロソフト系技術情報 Wiki)
移行メモ
- 「認証プロキシを通常のプロシキと同様の設定で」→「通常のプロキシ」に修正した。
- 「複数のキーチェーンがある。。」の句点の重複を除去した。
- 「ツール事の手順>#r4664a57」は「ツール毎の手順」の誤記のため修正した。
update-ca-certificatesの実行例の先頭に混入していたtext(生成AIの出力を貼り付けた際のコード・ブロック言語名と思われる)を除去した。- APT の
sudo tee ... <<EOFの例はヒアドキュメントの終端(EOF)が 欠落していたため補った。- 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (「Pythonの証明書ストア」「Windowsの場合」)は、GitHub Wiki では 見出しからアンカが生成されるため、見出しをプレーン・テキストとし、 リンクは直下の本文に置いた。
- 同名の見出し(「認証プロキシ」)が複数あり GitHub Wiki でアンカが衝突するため、 括弧で文脈を補って一意にした。
- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの プロキシの設定方法 に張り替えた。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。
Tags: 移行, プロキシ, Linux, 認証プロキシ, SSLフォワードプロキシ, 環境変数, APT, YUM, 証明書ストア
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。