お知らせ

現在サイトのリニューアル作業中のため、表示が崩れているページが存在することがあります。

WSL上のUbuntuで動作するnginxでHTTPSに対応したサーバーを作る方法。実機でも同様の手順でいける

確認環境

Env Ver
nginx nginx/1.18.0 (Ubuntu)
mkcert v1.4.4
Ubuntu 20.04.6 LTS
Windows 11 22621.3880

手順

  1. Windows側にmkcertを入れる
  2. mkcertで証明書を作る
    • mkcert sandbox.test
  3. 以下のpemファイルが生成される
    • sandbox.test.pem
    • sandbox.test-key.pem
  4. 生成されたpemファイルを/etc/nginx/conf.d/ssl/に移動する
  5. /etc/nginx/conf.d/sandbox.test.confを作成し、以下のような記述をする

    server {
        listen       443 ssl;
        client_max_body_size 100m;
        server_name  sandbox.test;
    
        ssl_certificate     conf.d/ssl/sandbox.test+1.pem;
        ssl_certificate_key conf.d/ssl/sandbox.test+1-key.pem;
    
        access_log   /var/log/nginx/sandbox.access.log;
        error_log    /var/log/nginx/sandbox.error.log;
    
        # ファイルホスト用
        #  location / {
        #    root /usr/share/nginx/html/sandbox;
        #    index index.html;
        #    try_files $uri /index.html =404;
        #  }
    
        # APサーバーへのリバプロ用
        location ~ ^/.*$ {
            rewrite ^/.*$ / break;
            proxy_set_header X-Request-Path $request_uri;
            proxy_set_header X-Host $host;
            proxy_pass  http://127.0.0.1:9999;
        }
    
        # fastcgi用
        location ~ \.php$ {
            root  /usr/share/nginx/html/sandbox;
            fastcgi_pass unix:/run/php/php8.0-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
    }
    
  6. nginxを再起動する
    • sudo service nginx restart

他の端末に証明書を撒く方法

mkcertのRoot CAをエクスポートして他の端末に突っ込めば、他の端末でもpemが流用できる

投稿日:OS::Linux::Ubuntu

確認環境

Ubuntu 22.04.3 LTS

設定ファイルのありか

/etc/ssh/sshd_config

公開鍵認証にする

SSHD側に公開鍵を置き、クライアント側からは秘密鍵でアクセスする

  1. sudo nano /etc/ssh/sshd_configで以下の設定に変更

    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
    PasswordAuthentication no
    PermitEmptyPasswords no
    
  2. 鍵置き場を作る

    mkdir ~/.ssh/
    
  3. 公開鍵を書き込む

    echo "公開鍵" > ~/.ssh/authorized_keys
    

備考

/etc/ssh/sshd_configPortもデフォルトの22から別の場所に変えておくとより良い。

mkcertで作ったCA証明書をエクスポートする方法でエクスポートしたCA証明書を他の端末に取り込む方法

Android

確認環境

Galaxy S22 Ultra Android 14

手順

  1. Android端末のストレージにエクスポートしたCA証明書を持ってくる
  2. 設定>セキュリティ>その他のセキュリティ設定>ストレージからインストール>CA証明書>このままインストール
  3. 内部ストレージからエクスポートしたCA証明書を選択

Windows

確認環境

Windows 11 Pro (22621.3155)

手順

  1. スタートメニューやコンパネから「ユーザー証明書の管理」を開く
  2. 信頼されたルート証明書を右クリックし、すべてのタスク>インポート
    信頼されたルート証明書を右クリックし、すべてのタスク>インポート
  3. エクスポートしたCA証明書を参照する
    エクスポートしたCA証明書を参照する
  4. 証明書ストアが「信頼されたルート証明機関」になっていることを確認する
    証明書ストアが「信頼されたルート証明機関」になっていることを確認する
  5. 取り込む証明書が正しいことを確認して「はい」
    取り込む証明書が正しいことを確認して「はい」

Ubuntu

確認環境

Ubuntu 22.04.3 LTS

手順

$CER_FILE="エクスポートしたCA証明書"
sudo openssl x509 -inform der -outform pem -in $CER_FILE -out PEM.crt
sudo cp PEM.crt /usr/local/share/ca-certificates
sudo update-ca-certificates

デスクトップにアイコンを表示させる

何故か標準ではアイコンが出てこないが、これをすることでデスクトップでファイル操作ができるようになる

  1. アクティビティを開き、「ex」と打ち、拡張機能を開く
    アクティビティを開き、「ex」と打ち、拡張機能を開く
  2. Desktop Icons NG (DING)をONにする
    Desktop Icons NG (DING)をONにする

日本語のフォルダ名を英語化する

/home/hoge/デスクトップみたいなパスを/home/hoge/desktopに変える方法

以下のコマンドを流す。

env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update
投稿日:OS::Linux::Ubuntuソフトウェア::その他

確認環境

Env Ver
Ubuntu 22.04.3 LTS

やり方

# sambaの導入
sudo apt install -y samba

# sambaユーザーの作成
export $NEW_USER=hoge
sudo useradd -s /usr/bin/zsh $NEW_USER
sudo passwd $NEW_USER
sudo mkdir /home/$NEW_USER
sudo smbpasswd -a $NEW_USER

# 必要最低限の設定を突っ込んでおく
sudo cp ~/.nanorc /home/$NEW_USER
sudo cp ~/.zshrc /home/$NEW_USER
sudo cp -R ~/.zsh /home/$NEW_USER
sudo chown -R $NEW_USER:$NEW_USER

# 元の設定退避
sudo cp smb.conf smb.conf.default
# 設定追加
cat <<EOF | sudo tee -a /etc/samba/smb.conf
[$NEW_USER]
path = /home/$NEW_USER/
browsable = yes
writable = yes
guest ok = no
read only = no
create mask = 0644
directory mask = 0755

vfs objects = recycle
recycle:repository = /home/$NEW_USER/.recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude_dir = .recycle
EOF

トラブルシュート

同一IPのsambaに異なるユーザーでアクセスできない

例えば\\192.168.1.10\hogeにhogeユーザー、\\192.168.1.10\piyoにpiyoユーザーでアクセスしようとすると上手くいかない。これはWindowsの資格情報がホスト単位であるためと思われる。hostsにドメインを切るなどし、ホスト部を別個にすると上手くいくようになる。

この場合、hoge.localpiyo.local192.168.1.10に向け、それぞれにhogeユーザーとpiyoユーザーの認証情報を持たせることで両立できる。

因みに\\192.168.1.10\hogeにhogeユーザー、\\192.168.1.10\piyoにもhogeユーザーでログインすることはできるが、基本的に権限周りで問題が起きると思う。無難なのは何かしらグループを作っておき、そのグループであれば自由に読み書きできるフォルダをsambaの共有フォルダに設定することだろう。