スキップしてメイン コンテンツに移動

投稿

OpenSSLで代替名入りの自己証明書をコマンド一発で作成する

自己証明書を作成するスクリプトは探せばみつかるとはおもいますが、代替名入りの自己証明書をコマンド一発で作成する記事は見かけなかったので、備忘録として挙げておくことにしました。 以下のスクリプトを 例えば sv113-gen-cert.shとして保存し、実行するだけでOKです。 #!/bin/bash openssl req -x509 -days 3650 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -extensions v3_req -config - 今回は決め打ちにしていますが、例えば commonNameやDNS.1などを変数にしたい場合は、以下のようにすると良いと思います。 CN=sv113.location00.xronos-msys.com DNS1=sv113.location00.xronos-msys.com IP1=172.16.113.113 \ openssl req -x509 -days 3650 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -extensions v3_req -config - なお、"-extenions v3_req" の記述がないと代替名が入りませんので注意してください。 今回は以上です。それでは。
最近の投稿

mokutil, dkms, sign-file コマンド で 3rd party kernel module にサイン

セキュアブートすると当然ながらサインのないカーネルモジュールは読み込まれません。単純にはサインすればいいのですが、dkmsパッケージをつくるまでもないので直接サインできないものかと思い、mokutil と dkms、それと linux-kbuild に含まれる sign-file コマンドを使うと意外とあっさりモジュールにサインできたので、備忘録として挙げておくことにしました。 以下手順です。 sudo su KVER=$(uname -r | cut -d'-' -f1) apt-get install mokutil dkms linux-kbuild-${KVER} dkms generate_mok mokutil --import /var/lib/dkms/mok.pub input password: input password again: # 再起動 reboot enters MOK manager EFI utility: 1. press any key 2. enroll MOK, 3. continue 4. enroll the key(s)?: yes 5. enter password 6. reboot (再起動) mokutil --list-enrolled --snip X509v3 Subject Key Identifier: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:C3:96:14:01 --snip # verify your key is loaded sudo dmesg | grep cert | grep c3961401 [ 1.088300] integrity: Loaded X.509 cert 'DKMS module signing key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc3961401' # モジュールにサイン cd /lib/modules/${KEVER}-amd64/3rdPartyMods /usr/lib/linux-kbuild-${KEVER}/scripts/sign...

セキュアブート可能な Debian usb removable drive を作成する

USB ドライブにセキュアブート可能なインストールをすることは、通常のローカルドライブにインストールするのと同じ手順で行けるのですが、すくなくとも Debian 12 の場合だと、efiboot のエントリーがインストールしたマシンの NVRAM に登録されますが、リムーバブルのターゲットドライブを他のマシンで使おうとすると、セキュアブートバイオレーションエラーがでて起動できませんし、NVRAM に自動的にエントリが入っていしまいます。 しかし、インストーラの USB ドライブは当然ながらセキュアブートが有効になっているマシンならどれでも起動できる上、NVRAM にはエントリが残らないので、多分行けるだろうと思い、インストーラの EFI ディレクトリをターゲットにコピーし、debian/grub.cfg だけ USB ターゲットドライブのものに差し替えた所、うまく行ったので備忘録として挙げておくことにしました。 以下シリアル/テキストモードでの手順です。 ############ 1. 通常通りターゲットドライブにインストール (ここは、グラフィックインストールでもOK) ############ 2. インストーラをレスキューモードで再起動し、ターゲットの USB Drive に chroot して作業を行う cd /boot/efi/EFI mv debian /root/xx-debian mv BOOT /root/xx-BOOT cd /boot/efi/EFI mkdir debian cp -a /root/xx-debian/grub.cfg debian/ ## インストーラのシェルを切替: # シリアルの場合: press ctrl + a then press 2 # テキストの場合: press ctrl + alt + F2 mkdir -p /target/boot/efi/EFI/BOOT cp -a /cdrom/EFI/boot/bootx64.efi /target/boot/efi/EFI/BOOT/ cp -a /cdrom/EFI/boot/grubx64.efi /target/boot/efi/EFI/BOOT/ ############ 3. efi ブートエントリーを efibootmgrを使って...

GRUB2で gfxterm と serialの両方で色付きの日本語(UTF-8)表示を同時に行う

表題の通りですが、grubのマニュアルをみていると、serial コンソールは色付きで utf-8 が使えるようだったのでトライしてみたところ、同時に gfxterm と serialの両方で Debian にて 日本語(UTF-8)表示ができました。 前提として LANG=ja_JP.UTF-8 となっている環境が必要ですが、通常のインストールの場合、日本語を選択すると大抵は LANG=ja_JP.UTF-8 になっていると思いますのでこの設定方法は割愛します。 まず、はじめに /etc/default/grub の設定です。 GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`( . /etc/os-release; echo ${NAME:-Debian} ) 2>/dev/null || echo Debian` GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n1" GRUB_TERMINAL="serial gfxterm" GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" つづいて /etc/grub.d/00_header を編集します。 sudo su apt-get install patch cd ~ cp -a /etc/grub.d/00_header 00_header.orig cp -a /etc/grub.d/00_header 00_header #以下の内容でパッチ(grub.d-00_header-ja.patch)を作成 #----------------------------------------------------------------- --- 00_header.orig 2025-03-15 22:55:29.000000000 +0900 +++ 00_header 2025-06-02 02:51:00.000000000 +0900 @@ -274,6 +274,18 @@ ;; esac +ca...

Debian 12 の cockpit で iSCSI を使う

Debian 12 に cockpit を入れたのですが、ログを見た所 iSCSI 関係のライブラリが無い旨のエラーがでていました。なんだろうと思いつつ、cockpit のストレージセクションを見てみると、たしかに iSCSI ターゲットの追加メニューがどこにもありません。なので、ライブラリを追加すれば行けるだろうとおもって cockpit のソースを見てみると Debian では libiscsi が無い旨の記述を見つけたのですが、libiscsi は Debian にはあるのでどういうことかわかりません。 そこで redhat 系のパッケージをソースから追ったところ、Debian の open-iscsi に該当するパッケージが libiscsi ライブラリをプロバイドしていて、Debianのlibiscsiとopen-iscsi が提供する libiscsiusr とは別物で Debian での open-iscsi にソースを追加したものをベースにしたパッケージだということがわかりました。   なので、rpm のソースを展開しソースを持ってきて、libiscsikrn なる deb パッケージを open-iscsi のパッケージに追加するようにし、また、cockpit は libiscsi を直接つかっているわけではなく、udisks2パッケージを仲介してストレジー関係のサービスを提供しているようだったので、Debian 側のudisks2のソースを見ると deiban/rulesで iSCSI が enable されていないので修正しこちらも udisks2-iscsi なるパッケージを追加しインストールしたところ、結果 cockpit そのものには手を加える必要はなく、無事 iSCSI のメニューが出てきました。 パッチの整理ができていないのですがソースとパッケージは こちら に置いてあります。 cockpitでのiSCSI接続は以下の通りです。まず最初にイニシエータ名を変更します。 cockpitからのiscsi接続は、ポータルの追加ではサーバ名だけを入力します。 ターゲット側で設定が済んでいると以下のようになります。 最後にここでユーザ名とパスワードを入力します。 使ってみた感想ですが、仮想マシンのストレージプールに cockpi...

mktempを使わずに文字列を変数に代入して操作

とあるrpmパッケージを rhel 9.5/9.6系に入れたのですが、systemd のサービスでスクリプトが呼び出された時に mktempしたファイルに追記しようしている箇所が、permission denied で許可がありません、とのエラーログがでていました。 mktemp で作成された一時ファイルなので、ファイルパーミッションそのものに間違いはなかったのですが、ls -Z で確認したところ、system_u:object_r:tmp_t:s0 /tmp/tmp.GV1sHMTOpY となっていて、 systemd で起動したサービスの /tmp にかかる selinux の設定が影響しているようでした。 何箇所か引っかかるのですが、主要な該当箇所は以下の所でした。 function TurnOnCron(){ # create temporary files with randomized name TmpRoot=$(mktemp) || return Err=$(mktemp) || return crontab -l >$TmpRoot 2>$Err if [ $? -ne 0 ]; then fgrep "no crontab" $Err >/dev/null || { sv_log "Error: Periodical supervision not available." rm -f $TmpRoot $Err return } fi fgrep "xxxxxxxCron" $TmpRoot>/dev/null if [ $? -eq 0 ]; then grep "0,5,10,15,20,25,30,35,40,45,50,55.*xxxxxxxCron.*" $TmpRoot>/dev/null && { # old crontab entry found, modify it sed -i...

efibootmgr を使ってブートエントリーを整理する

テスト用に OS を複数回同じ機材にインストールするとEFIブートエントリーが NVRAM に残ったままになり、どれがどれなのかわかりにくくなってしまいます。そこで不要なエントリーをしらべ整理したいと思ったのですが、意外とまとまった記事がなかったので、備忘録として挙げてみることにしました。 まず最初にエントリーを表示させます。 efibootmgr -v BootOrder: 0000,0015,0014,0012,0006,0007,0009,000A,000B,000C,0011 Boot0000* Debian_01 HD(1,GPT,XXXXXXXX-23f7-4f5e-b436-260e5fd276a7,0x800,0x100000)/File(\EFI\DEBIAN\GRUBX64.EFI) Boot0006* UEFI: PXE IP4 Mellanox Network Adapter - 50:6B:WW:WW:XX:XX PciRoot(0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/MAC(506bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot0007* UEFI: PXE IP4 Mellanox Network Adapter - 50:6B:WW:WW:XX:XX PciRoot(0x1)/Pci(0x0,0x0)/Pci(0x0,0x1)/MAC(506bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot0009* UEFI: PXE IP4 Intel(R) I350 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(901bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot000A* UEFI: PXE IP6 Intel(R) I350 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(901bWWWWXXXX,1)/IPv6([::]: [::]:,0,0)....