2022-12-28

在Rocky9使用openssl_sign及openssl_verify失敗的原因

 

在Rocky 9 (RHEL 9),一些已被認為不安全的cipher suites 及 protocols預設是停用的,

因此像在php8使用openssl_sign或openssl_verify,若不加第四個參數,預設都是用不安全的OPENSSL_ALGO_SHA1,因此會簽章或驗證失敗,但從錯誤訊息(-1)是看不出原因的(openssl_verify 來說,1=驗證成功,0=驗證失敗,-1/false=發生錯誤)。

還有使用ssh連線到別台主機時,可能別台主機還是用舊的sha1簽章,因此連線交握過程會失敗。

若在Rocky 9(RHEL 9)要啟用不安全的湊雜及加密演算法,必須下指令:
update-crypto-policies --set LEGACY

update-crypto-policies --set DEFAULT:SHA1 #只增加SHA1

以上指令會修改以下檔案(其實還會修改其它backend設定檔,如java/openssh/nss/gnutls等,以下單指openssl):
/etc/pki/tls/openssl.cnf:
[ crypto_policy ]
.include = /etc/crypto-policies/back-ends/opensslcnf.config

/etc/crypto-policies/back-ends/opensslcnf.config
[evp_properties]
rh-allow-sha1-signatures = yes

openssl-libs所包含的設定檔:
dnf repoquery -l openssl-libs | grep etc

ref:
https://bugs.launchpad.net/ubuntu/+source/crypto-policies/+bug/1926664/comments/6
https://gitlab.com/redhat-crypto/fedora-crypto-policies
https://forums.rockylinux.org/t/php-8-0-13-openssl-verify-fails-on-rocky-9/7478
https://github.com/php/php-src/issues/9686
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening
https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9

2022-11-26

在macbook pro m1/m2 上 safari 無法觀看 youtube HDR 影片的問題

 MBP在chrome/chromium上是可以正常觀看YOUTUBE HDR影片的,但在safari要設定幾樣東西才行:

  1. 在safari選單 Develop (開發) > Experimental Features (試驗性功能),打開 HDR Media Capabilities,至於 VP9 sw decoder on battery 選項若連下面2的設定也無效的話,再打開試試。

  2. 在設定裡的 電池 > 電池 選項,關閉(disable) 使用電池時最佳化影片串流 (Optimise video streaming while on battery)

  3. 若還不行,在選單 開發 > 使用者代理,改為Chrome試試 (應該是不需要)

  4. 若是要看Netflix的4K HDR或Dolby Vision,目前就只能用Safari看
ref:

2022-11-24

"libglib2.0-0:i386 相依於 zlib1g (>= 1:1.2.2)" 造成套件無法安裝問題

 dpkg: error processing package libglib2.0-0:i386 (--configure):

 dependency problems - leaving triggers unprocessed
================

dpkg: dependency problems prevent processing triggers for libglib2.0-0:i386:

 libglib2.0-0:i386 相依於 zlib1g (>= 1:1.2.2)﹔然而:

  zlib1g:i386 套件尚未設定。
================

dpkg: dependency problems prevent processing triggers for libglib2.0-0:i386:

 libglib2.0-0:i386 depends on zlib1g (>= 1:1.2.2); however:

  Package zlib1g:i386 is not configured yet.

================

解法:
dpkg --force depends -P libglib2.0-0:i386


ref:

https://github.com/pop-os/pop/issues/1276#issue-716376795

2022-11-02

Rocky Linux/Cenots/RHEL 9 用對拷完的硬碟開機,結果systemd卡在mount lvm的logical volume導致timeout

 這二天同事在建立了一個新的rocky linux 9的server後,因為要建立很多台再發放到各單位,所以請廠商複製原本能正常運作的硬碟再放到每一台NUC內,但是發現每一台都無法開機,卡在開機boot時要mount lvm裡的logical volume(lv)的/dev/mapper/rl-home 邏輯磁碟區,然後因mount不起來timed out後,也因為 root (/,根目錄)也是建在lvm內故也進不去emergency mode,導致很難查找問題。

2022-10-03

php-fpm + nginx + codeigniter 使用 virtual host設定調校

 當使用nginx + php-fpm建立virtual host (server block)時,要注意權限問題,最好不同的site用不同的使用者去存取php-fpm的pool,以下以建立site1及site2二個網站為例:

1.建立使用者,並記得修改/etc/passwd為nologin
sudo groupadd site1
sudo useradd -g site1 site1
sudo groupadd site2
sudo useradd -g site2 site2

2022-09-08

Netbeans 啟動 tomcat 時,顯示"Starting of Tomcat failed, the server port 8084 is already in use."(8084端口被占用)

 在netbeans設定tomcat時,若port設定為8084,且又打開 HTTP monitor功能的話,會導致tomcat開啟不了,顯示"Starting of Tomcat failed, the server port 8084 is already in use."

這是因為HTTP Monitor打開後,netbeans會啟動內建的tomcat 3 server,導致占port 8084,
要嘛將Server port改掉,要嘛關掉HTTP Monitor (這功能是會在HTTP Server Monitor顯示GET/POST等訪問紀錄)


另外,netbeans的web專案要是出現 "Deployment descriptor directory could not be found" 訊息,那可能就是少了web.xml 或WEB-INF資料夾,在專案按右鍵新增web.xml檔案即可。

2022-08-18

phpmyadmin 5.2.0 + mariadb 10.88.0.1,檢視使用者權限時遇到"Not enough privilege to view users"(權限不足以檢視使用者)

場景:
 phpmyadmin 5.2.0
 mariadb 10.88.0.1

問題:
phpmyadmin點選使用者帳號(User accounts)頁籤時,無法顯示使用者,出現"Not enough privilege to view users"(權限不足以檢視使用者)錯誤訊息

解決方式:
執行以下語句,並重新啟動mariadb
use mysql;
INSERT INTO `tables_priv` (`Host`, `Db`, `User`, `Table_name`, `Grantor`, `Timestamp`, `Table_priv`, `Column_priv`) VALUES ('localhost','mysql','mariadb.sys','global_priv','root@localhost','0000-00-00 00:00:00','Select,Delete','');

ref:
https://stackoverflow.com/questions/60387072/not-enough-privilege-to-view-users-in-phpmyadmin

2022-04-21

tomcat 9 發生 "too many open files" (開啟太多檔案)

 前二天早上tomcat突然掛掉,log 顯示如下:

  20-Apr-2022 10:22:41.714 嚴重 [https-jsse-nio2-8443-Acceptor-0] org.apache.tomcat.util.net.Acceptor.run Socket accept failed
 java.util.concurrent.ExecutionException: java.io.IOException: 開啟太多檔案
	at sun.nio.ch.CompletedFuture.get(CompletedFuture.java:69)
	at org.apache.tomcat.util.net.Nio2Endpoint.serverSocketAccept(Nio2Endpoint.java:334)
	at org.apache.tomcat.util.net.Nio2Endpoint.serverSocketAccept(Nio2Endpoint.java:59)
	at org.apache.tomcat.util.net.Acceptor.run(Acceptor.java:95)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: 開啟太多檔案
	at sun.nio.ch.UnixAsynchronousServerSocketChannelImpl.accept0(Native Method)
	at sun.nio.ch.UnixAsynchronousServerSocketChannelImpl.accept(UnixAsynchronousServerSocketChannelImpl.java:344)
	at sun.nio.ch.UnixAsynchronousServerSocketChannelImpl.implAccept(UnixAsynchronousServerSocketChannelImpl.java:280)
	at sun.nio.ch.AsynchronousServerSocketChannelImpl.accept(AsynchronousServerSocketChannelImpl.java:125)
	... 4 more

初步調查是tomcat開啟了太多檔案,造成"too many open files" (開啟太多檔案),網路上一般說法是說要調整系統的ulimit上限才行,但想想不太對,這系統會需要同時開啟的檔案不多,而且運行了幾年也沒有發生file leak的狀況。

先找出tomcat的pid,再用 ls -al /proc/<pid>/fd | wc -l,就可以知道tomcat目前開啟多少檔案(包含unix socket file)。

後來發現是tomcat自已的bug,會一直存取tomcat-users.xml卻沒有釋放資源,解法是升級 tomcat 9 >= 9.0.14+,或修改 server.xml,加入watchSource="false":

<resource 
 auth="Container"
 description="User database that can be updated and saved"
 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
 name="UserDatabase" pathname="conf/tomcat-users.xml"
 type="org.apache.catalina.UserDatabase"
 watchsource="false">
ref:
https://bz.apache.org/bugzilla/show_bug.cgi?id=62924#c2
https://zhuanlan.zhihu.com/p/75897823
https://www.cnblogs.com/linus-tan/p/10328801.html

2022-04-16

ubuntu/mint下chromium啟用硬體加速+解決netflix無法觀看

在ubuntu/mint下要啟用chromium的硬體加速,必須是pathced過的版本,

可以用 https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-beta 
(包含Widevine,觀看netflix等有DRM保護的串流時需要)

或 https://github.com/Eloston/ungoogled-chromium#downloads 
(不包含Widevine)

先裝好對應各顯卡的VA-API driver,啟動chromium時加上以下參數:

chromium-browser --use-gl=desktop --enable-features=VaapiVideoDecoder --disable-features=UseChromeOSDirectVideoDecoder
(chromium 98開始需加上 --disable-features=UseChromeOSDirectVideoDecoder)

用ungoogled-chromium又想加上Widevine DRM支援時,
可先下載對應版本的Chrome DEB安裝檔(stable, unstable),
解開後,把 ./opt/google/chrome/WidevineCdm 複製到
 /usr/lib/chromium/WidevineCd 或 ~/.local/lib/WidevineCdm

ref:
https://wiki.archlinux.org/title/Chromium#Hardware_video_acceleration
https://www.linuxuprising.com/2018/08/how-to-enable-hardware-accelerated.html
https://ungoogled-software.github.io/ungoogled-chromium-wiki/faq#linux

2022-02-12

Acer SPIN 5 (SP513-55N, SP513-41N)安裝Ubuntu/Linux MINT Cinnamon 20.3

想要支援平版型筆電, MINT裝Cinnamon版本會友善一點,MATE/XFCE的支援度差一點,但後面會講解法。 

1.開機時按F2進BIOS,
在Main頁面按ctrl+s呼叫出隱藏選項,
將SATA Mode=> AHCI, trackpad => PS2(待會會再改回來),
在Security將TPM關閉,
在Boot頁面將Secure Boot關閉(要先在Security頁面設Supervisor Password才能改),
Boot priority order 設為要用來安裝Ubuntu/Mint的USB。

2.開始安裝Mint,安裝時個人是分成三個分割區:
EFI => 550mb (UEFI開機載入需要此分割區)
SWAP=> 5120mb
剩下的都格式化為ext4並 mount 給 /

3.裝完後,修改 /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nocrs" #加入pci=nocrs
GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved
GRUB_TIMEOUT=3

修改完執行 sudo update-grub

3.打開更新管理員執行更新,若是intel版本,AX210網卡需5.10+ kernel,AX200需5.1+ kernel。若是amd版本,附的應該是都MT7921聯發科網卡,需要5.12+ kernel,但我建議把聯發科卡換成intel網卡,就算弄到能上網一樣是真心爛(掉包降速斷線等)。

重開機,進BIOS把trackpad改回IC2,開機時在選單選擇用最新的kernel開機。

4.調整自動旋轉
= 若是Cinnamon =:
進 管理/顯示器/設定,選擇Hi-DPI啟用fractional scaling,fractional scaling選150%
安裝touchscreen旋轉時的xinput修正:
sudo apt-get install x11-touchscreen-calibrator

Cinnamon其中有一個"自動螢幕旋轉",請保持停用狀態,不然啟用的話,螢幕設定不知怎的都無法正常保存。

= 若是MATE/XFCE =:
桌面設定一樣改 Hi-DPI
sudo apt-get install x11-touchscreen-calibrator
xrandr --output eDP --scale 1.5x1.5
sudo apt install autorandr
autorandr --save work

不管哪個版本,自動旋轉請改用自動偵測script (https://askubuntu.com/a/1375561),可放到開機自動啟動:

sudo apt install iio-sensor-proxy inotify-tools

==================================
#!/bin/bash
# Auto rotate screen based on device orientation
monitor-sensor | \
while IFS= read -r str; do
  if [[ $str =~ orientation\ changed:\ (.*)$ ]]; then
    case "${BASH_REMATCH[1]}" in
    normal)
      xrandr --output eDP --rotate normal ;;
    bottom-up)
      xrandr --output eDP --rotate inverted ;;
    right-up)
      xrandr --output eDP --rotate right ;;
    left-up)
      xrandr --output eDP --rotate left ;;
    esac
  fi
done
=================================

5.調整firefox滑動及steam縮放,修改/etc/environment,加入:
MOZ_USE_XINPUT2=1 #firefox,並把firefox設定中的平滑捲動取消
# GDK_SCALE=2 #steam,不過建議在啟動steam時加在指令前面就好

6.調整java介面縮放,修改 ~/.profile,加入:
#java ui scale
export _JAVA_OPTIONS='-Dsun.java2d.uiScale.enabled=true  -Dsun.java2d.uiScale=2'

7.fcitx輸入文字時,候選字(preedit)視窗(fcitx-qimpanel)過小:

譬如用的是ubutnu-grey主題,那麼就修改:
sudo vi /usr/share/fcitx-qimpanel/skin/ubuntu-grey/fcitx_skin.conf

FontSize=36
CandFontSize=36

若是用default佈景,那就修改:
sudo vi /usr/share/fcitx/skin/default/fcitx_skin.conf

8.觸控板多指手勢支援:
X11(後面指令以X11為主):
https://github.com/bulletmark/libinput-gestures
https://gitlab.com/cunidev/gestures

sudo apt install python3 python3-pip python3-venv python3-gi python-gobject meson wmctrl xdotool libinput-tools gettext appstream-util

sudo gpasswd -a $USER input
git clone https://github.com/bulletmark/libinput-gestures.git
cd libinput-gestures
sudo make install (or sudo ./libinput-gestures-setup install)
cp /etc/libinput-gestures.conf ~/.config/libinput-gestures.conf
newgrp input
libinput-gestures-setup autostart start


git clone https://gitlab.com/cunidev/gestures
cd gestures
meson build --prefix=/usr
ninja -C build
sudo ninja -C build install

之後再執行gestures程式調整要的多指手勢

若display server是Wayland的話,可參考:
https://extensions.gnome.org/extension/1253/extended-gestures/

9.指紋辨識(Fingerprint Reader),因為我用不到,而且加入方式也挺麻煩,跳過。

10. 修正外接麥克風(內建麥克風正常)無法收音問題:
修改 /etc/modprobe.d/alsa-base.conf
加入:
options snd-hda-intel model=alc255-acer,dell-headset-multi
(https://askubuntu.com/a/1307107)

11.取消進入休眠HIBERNATE (按F1似乎還是會進待機SUSPEND,但不會叫不醒了,也行…)
修改 /etc/systemd/logind.conf:
HandleSuspendKey=ignore

ref:
https://sciactive.com/2020/12/04/how-to-install-ubuntu-on-acer-spin-5-sp513-54n-for-the-perfect-linux-2-in-1/
https://wiki.archlinux.org/title/HiDPI