「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>Linuxの各種 手順]] *目次 [#ea5ed371] #contents *概要 [#ab21cc80] Linux環境でプロキシを設定する方法。 **設定例 [#d9ce56e7] ***通常プロキシ [#xfae2fc5] プロキシURLの設定方法 -http://proxy.example.com:8080 -http://<HOSTNAME>:<PORTNUMBER> ***認証プロキシ [#qa27a84b] プロキシURLの設定方法 -http://userid:password@proxy.example.com:8080 -http://<USERID>:<PASSWORD>@<HOSTNAME>:<PORTNUMBER> ※ <USERID> や <PASSWORD> に @ や : などの記号が含まれる場合は、URLエンコードが必要。 ***SSLフォワード・プロキシ [#n7e5e9a9] -SSLフォワード・プロキシが配布する証明書を指定する必要がある。 -復号化とパススルーが混在する場合は、既存証明書に証明書をバンドルする必要がある。 -ディストリビューション毎に、CA証明書バンドルのファイルパスがある。 --CA証明書バンドル(.pem)を管理ツールが証明書ディレクトリ内の個別証明書から生成 --証明書ファイル(.crt)を所定の証明書ディレクトリに配置し、管理ツールを実行 --[[ツール事の手順>#r4664a57]] -Ubuntuでの手順 --証明書を適切なディレクトリにコピー sudo cp server-cert.pem /usr/local/share/ca-certificates/server-cert.crt --証明書ストアを更新~ /ca-certificates/ の証明書を /etc/ssl/certs/ に統合。 $ sudo update-ca-certificates textUpdating certificates in /etc/ssl/certs... 1 added, 0 removed; done. --証明書の確認~ 証明書ファイル名やそのハッシュ値に基づくリンクが表示される ls /etc/ssl/certs | grep server-cert -[[ツール事の手順>#r4664a57]] ***Squidプロキシ [#mea8ebd0] -認証機能を持った、Webプロキシキャッシュサーバ -認証プロキシを通常のプロシキと同様の設定でバイパスできる。 -[[SSLフォワード・プロキシ>#n7e5e9a9]]としての機能もある。 **インターネット・オプション的な [#laecfd41] ***macOS [#z2e174f8] -プロキシ~ “システム環境設定” → “ネットワーク” → ネットワークデバイス → “詳細...” → “プロキシ” → “構成するプロトコルを選択:” -証明書ストア~ システム全体またはユーザーレベルでの証明書を管理するために、システム キーチェーン、ログイン キーチェーン、など複数のキーチェーンがある。。 ***Linuxのデスクトップ環境 [#s4ee1495] -プロキシ --GNOME:[設定] → [ネットワーク] → [ネットワークプロキシ] --KDE:[システム設定] → [ネットワーク] → [接続] → [プロキシ] -証明書ストア --GNOME Keyring(gnome-keyring-daemon) --KDE Wallet Manager(KWallet) >※ システム全体のCA証明書バンドルとは別のユーザー向けの証明書ストア **環境変数で設定 [#y2f549fb] シェル単位・ユーザー単位でプロキシ設定する最も一般的な方法 ***一時的に設定(シェル内のみ有効) [#k12741b9] 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 ***永続的に設定(ログイン時に反映) [#g76469e8] -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 -参考:[[環境変数の設定方法 > 汎用的な設定ファイル>環境変数の設定方法#i52f7875]] *詳細 [#xdb7058d] 以下は、ツールごとの話。 **シェル [#wd5aaea0] ***Bourne Shell (sh) 系 [#d838af95] sh や bash、ksh など。 export http_proxy="http://proxy.example.com:8080" export https_proxy=$http_proxy ***csh 系 [#z4ce4f3a] csh や tcshなど、レガシー環境の場合 setenv http_proxy "http://proxy.example.com:8080" setenv https_proxy $http_proxy **パッケージ・マネージャ [#cbe64ab2] ***APT(Debian/Ubuntu) [#q511a3e3] -メイン設定ファイルを使用する例 --*.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"; ***YUM(RHEL/CentOS 7系まで) [#i7e0642d] -*.conf sudo vi /etc/yum.conf -設定 proxy=http://proxy.example.com:8080 proxy_username=<USERID> proxy_password=<PASSWORD> **Web ブラウザ [#g9f648a7] Webブラウザの種類やデスクトップ環境(GNOME, KDEなど)によって異なる。 ***CLIブラウザ [#q74e563c] (w3m, lynx, curl, wget) -基本的に、環境変数を使用する。 -ツール毎にI/Fを持っていることも。 ***GUIブラウザ [#y819218f] (Firefox, Chromium, Chrome) -FirefoxはOSの環境変数を参照しないためGUIから手動設定が必要 -Chrome/Chromium --プロキシ設定をシステム設定(GNOMEやKDEの設定)に依存 --Chrome のコマンドラインで直接指定(プロキシ自動設定など) **その他のツール [#h84571cd] 個別に調査すべし。 ***プロキシ設定の環境変数 [#g5f09279] 基本的に、環境変数を使用するが、ツール毎に専用の設定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 ***独立した証明書バンドルを使用 [#r4664a57] -OSの証明書ストアとは別のバンドルを使用するランタイムもある。 --[[Python(requests / urllib3):certifi>Python#y9ac7218]] --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 *参考 [#vb3bf87f] **[[Windowsの場合>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95]] [#j3970de8]