Skip to content

DNET_ProxySettings

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

プロキシの設定方法

概要

Linux環境でプロキシを設定する方法。

設定例

通常プロキシ

通常プロキシを導入している場合、

  • プロキシURLの設定方法に付いて

  • 具体的な設定場所については後述。

認証プロキシ

認証プロキシを導入している場合、

  • プロキシURLの設定方法に付いて

    <USERID><PASSWORD> に @ や : などの記号が含まれる場合は、URLエンコードが必要。

  • 具体的な設定場所については後述。

SSLフォワード・プロキシ

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
      
  • ツール毎の手順

Squidプロキシ

  • 認証機能を持った、Webプロキシキャッシュサーバ
  • 認証プロキシを通常のプロキシと同様の設定でバイパスできる。
  • SSLフォワード・プロキシとしての機能もある。

インターネット・オプション的な

macOS

  • プロキシ
    “システム環境設定” → “ネットワーク” → ネットワークデバイス → “詳細...” → “プロキシ” → “構成するプロトコルを選択:”

  • 証明書ストア
    システム全体またはユーザーレベルでの証明書を管理するために、システム キーチェーン、ログイン キーチェーン、など複数のキーチェーンがある。

Linuxのデスクトップ環境

  • プロキシ

    • 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
    
  • 参考:環境変数の設定方法 > 汎用的な設定ファイル(環境変数の設定方法の該当節を参照)

詳細

以下は、ツールごとの話。

シェル

Bourne Shell (sh) 系

sh や bash、ksh など。

export http_proxy="http://proxy.example.com:8080"
export https_proxy=$http_proxy

csh 系

csh や tcshなど、レガシー環境の場合

setenv http_proxy  "http://proxy.example.com:8080"
setenv https_proxy $http_proxy

パッケージ・マネージャ

APT(Debian/Ubuntu)

  • メイン設定ファイルを使用する例

    • *.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
    

YUM(RHEL/CentOS 7系まで)

  • *.conf

    sudo vi /etc/yum.conf
    
  • 設定

    proxy=http://proxy.example.com:8080
    proxy_username=<USERID>
    proxy_password=<PASSWORD>
    

Web ブラウザ

Webブラウザの種類やデスクトップ環境(GNOME, KDEなど)によって異なる。

CLIブラウザ

(w3m, lynx, curl, wget)

  • 基本的に、環境変数を使用する。
  • ツール毎にI/Fを持っていることも。

GUIブラウザ

(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の手順

認証プロキシ(手順)

APT

  • 以下に追記

    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形式である前提で。

OSの証明書ストア

  • 証明書を適切なディレクトリにコピー

    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の証明書ストア

Pythonの該当節を参照。

参考

Qiita

Windowsの場合

プロキシの設定方法(マイクロソフト系技術情報 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, 証明書ストア

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally