py2exe0.6.1 開始可以建立 "almost standalone" 的 executive image 了。

想我今天還在苦惱 py2exe 0.5.4 弄出來的亂糟糟目錄... Open Source Rules。

Posted by yungyuc at 21:08, 0 comment, 0 trackback.

OK, 一段完成了之後第二段就不會太難了。剛剛用 ssl firefox multiple commonName關鍵字去找,便看到了這一篇。commonName 的寫法也列在裡面。

早看到就好了 :) 根據其中的 Interoperability Test,我選用 1. Way: SubjectAltName Only 這個方法;這是 x509v3 的一項 extension。先複製一份 openssl.cnf,在 [v3_req] 區塊裡加上 subjectAltName 的定義:

subjectAltName = DNS:domain1.com, DNS:domain2.com

然後打開 [req] 區塊裡的

req_extensions = v3_req

最後用這個 openssl.cnf 產生 request、簽核 certificate 即可;我把 request/sign 的過程寫成一個如下的 Makefile:

OWNER = yungyuc.yungyuc

default:
      echo "select one"

req:
      openssl req -new \
              -config openssl.cnf -text \
              -key key.pem -out req.pem

reqsubj:
      openssl req -noout -subject -in req.pem

reqtext:
      openssl req -noout -text -in req.pem

crt:
      openssl x509 \
              -req -days 3650 -sha1 \
              -extfile openssl.cnf -extensions v3_req \
              -CA cacert.pem \
              -CAkey cakey.pem \
              -in req.pem -out crt.pem
      chown $(OWNER) crt.pem

crtsubj:
      openssl x509 -noout -subject -in crt.pem

crttext:
      openssl x509 -noout -text -in crt.pem

這樣不管是 Firefox, Mozilla 還是 IE,都可以正確支援多 domain name 的 certificate 了。

Posted by yungyuc at 22:21, 0 comment, 0 trackback.

這真是一件艱辛又困苦的工作。

大部分架 WWW 的人都只有一個 IP 吧?無論是否如此,因為 apache 的 NameVirtualHost 非常好用的關係,想必大家都喜歡用 name-based virtual hosting,而 IP-based virtual hosting 能免則免;弄 virtual hosting 還要動 /etc/network/interfaces 畢竟是麻煩。

不過弄 TLS/SSL (https) 的時候 apache name-based virtual hosting 就傷腦筋了;因為 TLS/SSL 規格和實作上的限制,一個 IP 就只能有一個 certificate,所以 named-based virtual hosting 只能為一個 virtual host 提供完整 SSL 能力。

嚴格來講其它所有的 virtual host 也可以使用 SSL,但會共用相同的 certificate,因此只有一個 virtual host 能夠有正確的 domain name (commonName/CN) 對應。

為了研究出解決之道,我實在花了太多時間,以致於犬太郎都生氣了。我參考的主要資訊來源是 openssl-users@openssl.org 裡的 Re: How to include multiple common names in a single SSL certificate?x509 (1), req (1)

解法的重點在於讓 certificate 列出多個 commonName,也就是 domain name。我們可以修改 openssl.conf,讓 openssl req 執行時取得多重的 commonName 資訊,或者是直接用 -subj 指定 Subject line:

$ openssl req -new \
-key key.pem -out req.pem \
-subj "/C=TW/ST=Taiwan/O=SEETY/CN=domain1.org/CN=domain2.org"

-subj 是比較方便的作法 (note: openssl.conf 倒還沒有改對過)。

Request 產生出來之後,再用 root/CA cert/key 進行簽核,產生 certificate 即可:

$ openssl x509 \
-req -days 3650 -sha1 -extensions v3_req \
-CA cacert.pem \
-CAkey cakey.pem \
-in req.pem -out crt.pem \
-CAcreateserial

Multiply CN 這個方法唯一的缺點是它對 Firefox/Mozilla 無效,但對 Internet Explorer 是有效的 (可不可以因此說 IE 不安全呢?)。不過作為一個 workaround,在 https 跳出 certificate verification 對話框的時候多按幾個滑鼠,還在我可以接受的範圍之內。

P.S. 查找資料的時候看到了這個,蠻有用的樣子。

Posted by yungyuc at 19:00, 0 comment, 0 trackback.

有感小發。

是要睡覺的時間了,但因為種種原因,還不是那麼想睡覺。

誰的專利?誰的保護?誰的霸權?一文後想起前一陣子看過的著作權保護了誰?一書。書中的第二章「馬克吐溫與文學著作權的歷史」令我印象深刻;若要以一句話來總結這一段的心得,應是「美國藉由盜版來對抗歐陸文化強權,讓文化產業得以成長」。

從道德的角度可以對智慧財產侵權的行為作出正確的判斷,但在法律上卻可能很難;這項權利本身就很難說是一項「天然權利」,卻比較偏向一種具目的性的人為規則。脫離過去的文化商業行為框架之外的文化消費/資訊交換必然影響金錢的流向,然而在資訊科技繼續擴展人際交流圈的現在與未來,人類文化卻也只會更加地豐富與複雜;這是許多人所心神嚮往的。

至於公平性的問題,是否有些人會終身為人作嫁或一夕成名,對於歷史的演進來講,應該是最不重要的一件事了。

Posted by yungyuc at 12:22, 0 comment, 1 trackbacks.

其實在「Ctrl+K 具備」的 Firefox 上安裝遲來的 Google Toolbar 似乎用處已經不大了,不過拿來看看 PageRank 倒是挺方便的。

在 XGA 螢幕上同時開著 Web Developer Toolbar 和 Google Toolbar 真是很佔空間。我大概不能支持很久吧。

Posted by yungyuc at 22:38, 0 comment, 0 trackback.

我家裡有 12 支三孔排插。

12 支三孔排插是很貴的。一支排插算 200 塊錢,12 支就要 2400 塊血汗錢。生命就該浪費在美好的事物上,不過我的排插空槽至少有 1/3 浪費在大頭變壓器身上,一點也不美好。

感動呀感動,南宮博士是從哪裡找到這張美妙豔物的 (左圖)。實在是令人心動神往不能自己呀。

切... 不過我已經有 12 支排插了。

Posted by yungyuc at 19:11, 0 comment, 1 trackbacks.

SCons 是好系統,不過對付 Fortran 90 (with module) 的時候還不夠聰明。

包含 module 的 Fortran 90 原始碼檔案在被 Object() 的時候除了 .o 檔之外,還會產生 .mod 檔。這個 .mod 檔同樣會被放進 Object() 傳回的 node list 裡,所以之後在 Program( "image", obj_list1+obj_list2 ) 的時候,linker 多半都會抱怨 blahblah.mod 的格式不對。

.mod 檔根本不應該被傳進 linker parameter list,不需要被連結。這裡告訴我們應該怎麼把 node list 裡的 .mod 檔濾掉;利用 filter() 函式。

目前這似乎是最簡單的解決方法。

Posted by yungyuc at 21:14, 0 comment, 0 trackback.

方便的 shell function:

pathmunge () {
  if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
    if [ "$2" = "after" ] ; then
      PATH=$PATH:$1
    else
      PATH=$1:$PATH
    fi
  fi
  export PATH
}

在設定路徑之前建立這個函式,就可以避免路徑裡出現重複的項目;加以變化,還可以設定其它種類的路徑:

manpathmunge () {
  if ! echo $MANPATH | /bin/egrep -q "(^|:)$1($|:)" ; then
    if [ "$2" = "after" ] ; then
      MANPATH=$MANPATH:$1
    else
      MANPATH=$1:$MANPATH
    fi
  fi
  export MANPATH
}

不知道 Debian 的 /etc/bashrc 裡為何沒有定義。把這個函式加到 ~/.bashrc 裡的話會很方便。

Posted by yungyuc at 20:45, 0 comment, 0 trackback.

過了好一段沒有中文粗體字的日子。

現在解放了。今天碰巧看到 pcman 談到他讓 unstable 支援了中文粗體,一問之下才注意到 kanru 早在五月的時候就已經報告過 freetype/xft 中文粗體的進度。

後知後覺沒關係,如今在 Debian etch 上啟動中文粗體更簡單了。只要在

$ apt-get install -t unstable libfreetype6

之後,安裝在 unstable 裡建好的 libxft2,粗體就會出來。

當然,嫌另外跑到 unstable 去重建 libxft2 麻煩的話,用

$ apt-get build-dep -t unstable libxft2
$ apt-get source -b libxft2

直接建也可以,只是會把 etch 弄髒。如何選擇,端視個人喜好了。

才剛開始用十分鐘,雖然很興奮,但也發現一些問題。Firefox 在處理 <strong> 標籤的時候,似乎並不會啟動中文粗體。

Posted by yungyuc at 22:22, 0 comment, 0 trackback.
tag on Zope

Plone 2.1 - Plaid - Released September 6, 2005,過了這麼久才發現到... 總之可以昇級了。

Plone 2.1 對 AT 的支援應該足以期待;而 Plone 2.2 也準備在 11/01 發行。

真是動作迅速。

Posted by yungyuc at 22:03, 0 comment, 0 trackback.
Change to page (10 entries in each page): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
© hover year to navigate month: powered by django