make run_nokdbtests
ps -ef
make run_nokdbtests
ps -ef
ãã¹ãã¯ãçµäºåŸã«gpg-agentsãåæ¢ããå¿ èŠããããŸã
ãã¹ããå®è¡ãããã³ã«ãããå€ãã®gpg-agentãçæãããŸã
+ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 05:57 pts/0 00:00:00 bash
root 11296 1 0 07:01 pts/0 00:00:00 sh -c /usr/bin/python2 /root/cppcms-1.2.0/tests/http_timeouts_test.py
root 11297 11296 0 07:01 pts/0 00:00:00 /usr/bin/python2 /root/cppcms-1.2.0/tests/http_timeouts_test.py write
root 28509 1 0 07:55 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.NmmZ2I/.gnupg --use-standard-soc
root 28519 1 0 07:55 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.6mb1t2/.gnupg --use-standard-soc
root 28539 1 0 07:55 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.5XdxDR/.gnupg --use-standard-soc
root 30656 1 0 08:00 pts/0 00:00:00 ps -ef
+ make run_nokdbtests
+ ps -ef
+ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 05:57 pts/0 00:00:00 bash
root 11296 1 0 07:01 pts/0 00:00:00 sh -c /usr/bin/python2 /root/cppcms-1.2.0/tests/http_timeouts_test.py
root 11297 11296 0 07:01 pts/0 00:00:00 /usr/bin/python2 /root/cppcms-1.2.0/tests/http_timeouts_test.py write
root 28509 1 0 07:55 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.NmmZ2I/.gnupg --use-standard-soc
root 28519 1 0 07:55 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.6mb1t2/.gnupg --use-standard-soc
root 28539 1 0 07:55 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.5XdxDR/.gnupg --use-standard-soc
root 30778 1 0 08:02 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.GZbzqb/.gnupg --use-standard-soc
root 30788 1 0 08:02 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.PEjcKs/.gnupg --use-standard-soc
root 30808 1 0 08:02 ? 00:00:00 gpg-agent --homedir /tmp/elektra-test.d6yL2g/.gnupg --use-standard-soc
root 30923 1 0 08:02 pts/0 00:00:00 ps -ef
åé¡ãå ±åããŠããã ãããããšãããããŸãïŒ
@ petermax2ãã¹ãäžã«gpgã³ãã³ããgpg-agentsãçæããå¯èœæ§ã¯ãããŸããïŒ
ãã£ãšãgpgã¯åžžã«åããšãŒãžã§ã³ãã«æ¥ç¶ãããšæããŸããã 調æ»ããŸãã
@ markus2330ããã¯ã
ããããåé¡ã¯dockerã«éå®ãããŠããŸããïŒdebian-stretch-minimalã«ã¯250ãè¶ ãããã®ããããŸã
äžéšã®ããŒãã¯ããã¹ãã§äœ¿çšãããjenkinsã®gpg-agentãçæããããã«èšå®ãããŠããããã圱é¿ãåããŸããïŒãããã確èªããå¿ èŠããããŸãïŒ
ããã調ã¹ãŠãããŠããããšãïŒ
äžéšã®ããŒãã¯ããã¹ãã§äœ¿çšãããjenkinsã®gpg-agentãçæããããã«èšå®ãããŠããããã圱é¿ãåããŸããïŒãããã確èªããå¿ èŠããããŸãïŒ
éå§ãããšãŒãžã§ã³ãã匷å¶çµäºããæ¹æ³ãèŠã€ãããªãå Žåã¯ãç°å¢ã«ãã§ã«gpg-agentïŒïŒ1888ïŒãããããšãèŠæ±ã§ããŸãã
ãã¶ããgpgãšãŒãžã§ã³ãã¯ãŸã£ããèµ·åããå¿ èŠããªãããã¹ãäžã«ãããæå¶ããããšãã§ããŸãã ããããç§ã¯å€æ¹ã«ãããèŠãªããã°ãªããŸããã
mhã¯éåžžãéå§æã«GPG_AGENT_INFO
ãèšå®ããå¿
èŠããããŸããéå»ã«ã¯ãç°å¢å€æ°ãã¯ãªãŒã³ã¢ããããŠãéå»ã®è€æ°ã®éå§ã説æããå¯èœæ§ããããŸãã ãªãä»ããŸã èµ·ãã£ãŠããã®ãåãããŸããã...
@ petermax2 gpg-agentãå¿ èŠãšãããã¹ãïŒgpg-agentã®ååãgpg-agent.bakã«å€æŽããŠèŠã€ãããŸãã;ïŒïŒïŒ
testmod_fcrypt
testmod_crypto_openssl
testmod_crypto_gcrypt
testmod_crypto_botan
ã¯ã testmod_crypto_gcrypt
ããã³testmod_crypto_openssl
ãšãŸã£ããåãããã«å®è¡ããå¿
èŠããããŸãã Botanãã¹ãã¯ãµãŒããŒã§å®è¡ãããŠããŸããïŒ
@ petermax2ããããããã§ãã ç§ããã¹ãããç°å¢ã§ã¯ããã¿ã³ã¯ã€ã³ã¹ããŒã«ãããŠããŸããã§ããã ãã ããããã§ã¯å®è¡ã
ããã»ã©åçŽã§ã¯ãããŸããã åäœãã¹ãäžã«--no-autostart
åŒæ°ãæå®ããŠgpg
ãåŒã³åºãããšããŸããããgpgã¯ãŸã ãšãŒãžã§ã³ããèµ·åããŸãã --no-use-agent
ã¯é¢çœããã®ã§ãã ããã¥ã¢ã«ããŒãžã«ã¯æ¬¡ã®ããã«æžãããŠããŸãã
--no-use-agent
This is dummy option. gpg2 always requires the agent.
éå§ãããšãŒãžã§ã³ãã匷å¶çµäºããæ¹æ³ãèŠã€ãããªãå Žåã¯ãç°å¢ã«ãã§ã«gpg-agentïŒïŒ1888ïŒãããããšãèŠæ±ã§ããŸãã
ãããè©ŠããŠã¿ãŸãããïŒ
ãŸãã¯ã次ã®ãããªcronãžã§ãããããŸã
pgrep gpg-agent | xargs -d "\n" kill
ãŸãã¯ãã«ããµãŒããŒ/ã³ã³ããã§åæ§ã®ãã®ïŒ
ãšãŒãžã§ã³ããå©çšå¯èœãã©ããããã¹ããã§ãã¯ããŸããå©çšã§ããªãå Žåã¯ããšãŒãžã§ã³ããèµ·åããŠpidãä¿æããŸãã ãã¹ãã¯ãªãŒã³ã¢ããã§ãšãŒãžã§ã³ããåæ¢ããŸãã ä»ã®ãã¹ãŠã¯ããã¯ã§ãã
ããªãã¯æ£ããã§ããå¯äžã®åé¡ã¯éå§ãšåæ¢ãã©ãã§èµ·ããã¹ããã§ãã ãšãŒãžã§ã³ã/ããã«ãŒå ã§ãããè¡ãããšã¯ãCã§èšè¿°ãããåäœãã¹ããããç°¡åãªããã§ãã
ãããç§ããããŸã§ã«åŠãã ããšã§ãïŒ
ãã¹ãŠã®gpg
åŒã³åºãã§äžè²«ããŠäœ¿çšãããŠããå Žåã¯ã --no-autostart
ãªãã·ã§ã³ã䜿çšããŠgpg-agent
ã®èªåéå§ãæå¶ããããšãã§ããŸãã ãã ãã gpg-agent
ããªããšã gpg2
ã¯ãç§å¯éµãå¿
èŠãšããæäœïŒã€ãŸãã埩å·åã眲åïŒãå®è¡ã§ããŸããã
gpg-agent --server
ããã©ãŒã¯ããããšãã§ããŸããã gpg2
ã¯ãšãŒãžã§ã³ãã«æ¥ç¶ã§ããŸããã ç°å¢å€æ°GPG_AGENT_INFO
ã¯éæšå¥šã«ãªãã gpg2
ã§ã¯èæ
®ãããªããªããŸããã
gpg-agent --daemon
ããã©ãŒã¯ããŠå®è¡ããããšããŸãã ãã¹ããå®äºãããšãã«SIGTERM
ãå®è¡ã§ããããã«ãéå§ãããgpg-agent
ã®PIDãèŠã€ããæ¹æ³ãå¿
èŠã§ãã
ãšãŒãžã§ã³ã/ããã«ãŒå ã§ãããè¡ãããšã¯ãCã§èšè¿°ãããåäœãã¹ããããç°¡åãªããã§ãã
ã¯ããã«ç°¡åã ãšæããŸã:-)
gpgã®ããã©ã«ãã®æ¹æ³ã䜿çšããŠãšãŒãžã§ã³ãã«æ¥ç¶ãããšããããªãã®æ±ºå®ã¯æ£ããã£ããšæããŸãã
gpg-agentãéå§/åæ¢ãã代ããã«ã.gnupg /gpg.confã®ãuse-agentããç¡å¹ã«ããããšãã§ããŸãã
1ã€ã®ãšãŒãžã§ã³ãã®èªåèµ·åã«åé¡ã¯ãããŸããïŒããã«ã¯å®è¡ããŠããŸãïŒã æ°ãããã¹ããéå§ããåŸç¶ã®ãã¹ãã«åé¡ããããŸã
gpgã®ããã©ã«ãã®æ¹æ³ã䜿çšããŠãšãŒãžã§ã³ãã«æ¥ç¶ãããšããããªãã®æ±ºå®ã¯æ£ããã£ããšæããŸãã
å®çšŒåç°å¢ã§ã¯ããããããé©åãªãªãã·ã§ã³ã§ãã ç§ã®ãã·ã³ã§ã¯ã crypto
ãšfcrypt
åžžã«åããšãŒãžã§ã³ãã«æ¥ç¶ããYubikeyãšã®çµ±åã¯éåžžã«ããŸãæ©èœããŸãã
ãã¹ãç°å¢ã§ã¯ããã¹ããéå§ããåã«ããšãŒãžã§ã³ãã®åäžã€ã³ã¹ã¿ã³ã¹ã皌åç¶æ ã«ä¿ã€å¿ èŠããããŸãã åé¡ã¯ã@ ingwinluãåè¿°ããããã«ãç°å¢ãã¯ãªã¢ããããšã ãšæããŸãã
åé¡ã¯ãç°å¢ãã¯ãªã¢ããããšã ãšæããŸã
ãããã¹ãã§ã¯ãããŸããã ããããåé¡ã¯è§£æ±ºããŸãã
gpg-agentãæããã«æ©èœããªãç°å¢ãä»ããŠéä¿¡ããããšããå Žåã次ã®ãã¹ãå®è¡ã§ã¯ãåã®ãã¹ãå®è¡ã§èšå®ãããç°å¢ãååŸãããããšã¯ãããŸããã
ç§ã¯æ¬¡ã®2ã€ã®ãªãã·ã§ã³ãäžçªå¥œãã§ãïŒ
ããŒã¢ã³ããã§ã«éå§ãããŠãããã©ãããã°ããŒãã«ã«ç¥ãæ¹æ³ãªãã«ããŒã¢ã³ããªã³ããã³ãã§éå§ãããã»ããã¢ããïŒããã³envå€æ°ã¯ã°ããŒãã«ã§ã¯ãªãããã»ã¹åºæïŒã¯å£ããŠããããã§ãã ãã¹ãå ã§ãããä¿®æ£ããããšãã¹ãã§ã¯ãããŸããã
å€ãã®ãšãŒãžã§ã³ããçæããçç±ã¯ã-homedirãªãã·ã§ã³ã䜿çšããå¥ã®ããŒã ãã£ã¬ã¯ããªã§ããããã§ãªãå Žåã¯ãåäžã®ããŒã ãã£ã¬ã¯ããªã䜿çšãããŸãã GnuPG 2.1以éããšãŒãžã§ã³ããšã®ãã¹ãŠã®éä¿¡ã¯ãGnuPGããŒã ãã£ã¬ã¯ããªã®ãœã±ãããä»ããŠå®è¡ãããŸãã
homedirãªãã·ã§ã³ã¯äœ¿çšããŸããã ãŸãã https ïŒ//dev.gnupg.org/T3218ã§ã¯ãstackoverflowã®åé¿çããïŒéåžžã«åä»ãªïŒåé¿çããšèª¬æããŠããŸãã
ãã¶ããåã«gpg-agentãèµ·åããããšããïŒç§ãã¡ã®ç°å¢å ã§å¶åŸ¡ãããæ¹æ³ã§ïŒæãå°æ¥æ§ã®ããããªã¢ã³ãã§ãã æè¿ã®ããŒãžã§ã³ã§ã¯ãgpg-agentã®èµ·åã¯ãªãã·ã§ã³ã§ã¯ãªããªã£ãããã§ãã ïŒããã¯ç§ã®ãªãã·ã§ã³2ãç¡æå³ã«ããŸãïŒ
homedirãªãã·ã§ã³ã¯äœ¿çšããŸããã
ããããããã©ãããæ¥ãã®ãã¯ããããŸãããããã¹ãŠã®ãšãŒãžã§ã³ããå¥ã®ãšãŒãžã§ã³ãã§ã¹ããŒã³ãããããåé¡ãšäžèŽããŸãïŒopãåç §ïŒã
ããã¯è¯ããã³ãã§ãããç§ã¯gpg-agentã®èµ·åããã¯ããªãã·ã§ã³ã§ã¯ãªãããšãåŠã³ãŸããã
ããã¯ããããéå§ããã³åæ¢ããå¿ èŠãããããšãéåžžã«æ確ã«ããŠããŸãã ãããŠãéå§ãé¿ããããšããªãã§ãã ããã
homedirãªãã·ã§ã³ã¯äœ¿çšããŸããã
ãããã©ãããæ¥ãã®ãããããŸããããåé¡ãšäžèŽããŸãïŒopãåç §ïŒ
--home-dir
ãªãã·ã§ã³ãæ瀺çã«äœ¿çšããŠããŸãããã ps -ef
ã gpg
ããšã«ãããããèšå®ããŠããããšã瀺ããŠããŸãã
https://wiki.archlinux.org/index.php/GnuPG
$ GNUPGHOMEã¯ãæ§æãã¡ã€ã«ãä¿åãããŠãããã£ã¬ã¯ããªãæãããã«GnuPGã«ãã£ãŠäœ¿çšãããŸãã ããã©ã«ãã§ã¯ã$ GNUPGHOMEã¯èšå®ãããŠãããã代ããã«$ HOMEã䜿çšãããŸãã ãããã£ãŠãã€ã³ã¹ããŒã«çŽåŸã«ã/ .gnupgãã£ã¬ã¯ããªãèŠã€ãããŸãã
ããã©ã«ãã®å Žæãå€æŽããã«ã¯ããã®æ¹æ³ã§gpgãå®è¡ãã$ gpg --homedir path / to / fileãŸãã¯ãGNUPGHOMEç°å¢å€æ°ãèšå®ããŸãã
`` `
@ petermax2ãã¹ãã¹ã€ãŒãã§HOMEãå©çšå¯èœãã©ããã確èªã§ããŸããïŒ
ãŸãèå³æ·±ãhttps://www.gnupg.org/documentation/manuals/gnupg/Ephemeral-home-directories.html ïŒ
äžæãã£ã¬ã¯ããªãäœæããããŒãºãæºããæ§æãäœæïŒãŸãã¯ã³ããŒïŒããç°å¢å€æ°GNUPGHOMEãŸãã¯ãªãã·ã§ã³--homedirã䜿çšããŠgpgã«ãã®ãã£ã¬ã¯ããªã䜿çšãããŸãã GPGMEã¯ãã³ã³ããã¹ãã®ãšã³ãžã³æ å ±ãå€æŽããããšã«ãããã³ã³ããã¹ãããšã«ããããµããŒãããŸãã 次ã«ãå¿ èŠãªæäœãå®è¡ããå¿ èŠã«å¿ããŠããŒãããªã¢ã«ãã€ã³ããŒãããã³ãšã¯ã¹ããŒãããŸãã çµäºãããããã£ã¬ã¯ããªãåé€ã§ããŸãã éå§ããããã¹ãŠã®GnuPGããã¯ãšã³ããµãŒãã¹ã¯ãããæ€åºããŠã·ã£ããããŠã³ããŸã
ç§ã®ã³ã³ããã§ããããã¹ãããçŽæã©ããã«ããã»ã¹ãèªåçã«ã¯ãªãŒã³ã¢ããããŸããã
@ petermax2ãã¹ãã¹ã€ãŒãã§HOMEãå©çšå¯èœãã©ããã確èªã§ããŸããïŒ
ã¯ãã HOME
ãå©çšå¯èœã§ãïŒ
HOME = /tmp/elektra-test.3vLR4L
OKããã¹ãã¹ã€ãŒãã®äœããHOMEãtmpãã£ã¬ã¯ããªã«ãªãŒããŒã©ã€ãããŠããŸãïŒããã¯è¯ãããšã§ãïŒã ã¯ãªãŒã³ã¢ããäžã«ããããŸã å©çšå¯èœãªå Žåã¯ããšãŒãžã§ã³ããåæ¢ããããã«åé€ããå¿ èŠããããŸãã ããã¯çæ³çãªä¿®æ£ã§ãã
GNUPGHOME
ã ãã§ã¯ã gpg-agent
ã€ã³ã¹ã¿ã³ã¹ã1ã€ã ãçæãããŸãã GNUPGHOME
ã¯ããã¹ããéå§ãããåã«äžæžããããŸããã
GNUPGHOME
èšå®ãããšãè€æ°ã®ãã¹ãã®å®è¡åŸã«1ã€ã®gpg-agent
ãå®è¡ãããŸãã
ãããæãç°¡åãªè§£æ±ºçã ãšæããŸãã
ããŒã ãã£ã¬ã¯ããªãå
±æãããšããã¹ãã䞊è¡ããŠå®è¡ã§ããªãå Žåãããããšã«æ³šæããŠãã ããã
ãŸããåŸã§GNUPGHOMEãåé€ããå¿
èŠããããŸãïŒãã°ã€ã³ããŠãããŠãŒã¶ãŒã®åŒã³åºãã«å¿çããpgp-agentãé·åŒãããšã¯æãŸãããããŸãããïŒïŒã
ãŸããã¿ãŒã²ããã·ã¹ãã ãGNUPGHOMEã§ãªã¬ãŒãããšã©ããªãããæ¢åã®envãä¿åãããã¹ãåŸã«æåã§åŸ©å ããå¿ èŠããããŸãã
äžæ©äžãã£ãŠããããã®ãã¹ãããã¹ããµãŒããŒç°å¢ã ãã§ãªããŠãŒã¶ãŒãã·ã³ã«ã©ã®ããã«åœ±é¿ããããèŠãŠããã ããã°å¹žãã§ãã
ãã¹ãã䞊è¡ããŠå®è¡ã§ããªãå ŽåããããŸãã
ã¹ã¯ãªãããå®è¡ããŸããïŒ
#!/bin/bash
mkdir /tmp/x
export GNUPGHOME=/tmp/x
for run in {1..1000000}
do
ctest -R crypto_openssl &
done
åé¡ãªãã GPGã¯ããã¯ãªã©ãåŠçããå¿ èŠããããŸãã
ãã°ã€ã³ãããŠãŒã¶ãŒã®åŒã³åºãã«é·åŒãpgp-agentãå¿çããããšãæãŸãªãã®ã§ããïŒ
ããã¯gpg-agent
ãèšèšãããæ¹æ³ã§ãïŒãŠãŒã¶ãŒã»ãã·ã§ã³ãçµäºãããŸã§æ°žä¹
ã«å®è¡ãããŸãã PIDãã©ããã«æžãåºãããšã¯ãªããçµäºããã³ãã³ãããããŸããã SIGTERM
ã«ã®ã¿åå¿ããŸãã
--server
ãªãã·ã§ã³ã䜿çšããŠåäœãã¹ãå
ããfork
gpg-agent
ããããšããã®ã§ãåŸã§kill
ãžã®PIDããããŸãã ãã ãã gpg-agent
ã¯$GNUPGHOME
ã§å¿
èŠãªãœã±ãããéãããåäœãã¹ãã¯ãšãŒãžã§ã³ãã®å¥ã®ã€ã³ã¹ã¿ã³ã¹ïŒ --daemon
ã¢ãŒãã§å®è¡ãããŠããïŒãå床éããŸãã ãŸãã --server
ã¢ãŒãã®ãšãã«gpg-agent
ãœã±ãããéãæ¹æ³ã¯ãããŸããïŒããããœãŒã¹ã³ãŒãgpg-agent
ïŒã
gpg-agent
ã¯å¶åŸ¡ãé£ãããææžåãã»ãšãã©ãããŠããŸããã gpg-agent
ã®ãœãŒã¹ã³ãŒããèªãã§ããŸããã ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã¯ã«ããŒãããŠããŸããã å¯äžã®ãªãã·ã§ã³ã¯SIGTERM
ã§ãã
䞊ååŠç
ãäºãã«åœ±é¿ãäžããŠã¯ãããªãgpg-agentãåé¢ããããšããããšããã£ãšèããŠããŸããã ã€ãŸãããšãŒãžã§ã³ãaã«ãã¹ãaã®ããŒã®ã¿ãæããããšãŒãžã§ã³ãbã«ãã¹ãbã®ããŒãæãããŸãã ãããå¿ èŠãªãå Žåã¯ãããŒãã³ãŒããããtmpããŒã ã§åé¡ãããŸããã
gpg-agentã殺ã
ãã®åé¡ãæåã«èª¿æ»ãããšããäžæçãªgpg-agentãã·ã£ããããŠã³ããããã®äºæ³ãããæ¹æ³ã¯ãã®gpgããŒã ãã£ã¬ã¯ããªãåé€ããããšã§ãããšè¿°ã¹ãWebãµã€ãïŒäžèšã®ãªã³ã¯ïŒã«åºããããŸããã
ãããã£ãŠãGNUPGHOMEã/tmp/elektra_tests/gpg
ãããã¹ãã®ã¯ãªãŒã³ã¢ããäžã«ãã®tmpãã£ã¬ã¯ããªãåé€ãããšãåé¡ãªãã¯ãã§ãã
ãããã£ãŠãGNUPGHOMEã/ tmp / elektra_tests / gpgã«èšå®ãããã¹ãã®ã¯ãªãŒã³ã¢ããäžã«ãã®tmpãã£ã¬ã¯ããªãåé€ãããšåé¡ãããŸããã
ã§ããŸãïŒ ãã®ä¿®æ£ãcrypto
ããã³fcrypt
ãã¹ãã±ãŒã¹ã«çµ±åããŸãã ãã³ãããããšãããããŸãïŒ
ç§ã¯å®çšçãªãããã¿ã€ããæã£ãŠããŸãã PRã¯ææ¥æ¥ãŸãã
ïŒ2056ã§ä¿®æ£ããå¿ èŠããããŸãã ããã§ãåé¡ã解決ããªãå Žåã¯ãå床éããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
ããŒã ãã£ã¬ã¯ããªãå ±æãããšããã¹ãã䞊è¡ããŠå®è¡ã§ããªãå Žåãããããšã«æ³šæããŠãã ããã
ãŸããåŸã§GNUPGHOMEãåé€ããå¿ èŠããããŸãïŒãã°ã€ã³ããŠãããŠãŒã¶ãŒã®åŒã³åºãã«å¿çããpgp-agentãé·åŒãããšã¯æãŸãããããŸãããïŒïŒã
ãŸããã¿ãŒã²ããã·ã¹ãã ãGNUPGHOMEã§ãªã¬ãŒãããšã©ããªãããæ¢åã®envãä¿åãããã¹ãåŸã«æåã§åŸ©å ããå¿ èŠããããŸãã
äžæ©äžãã£ãŠããããã®ãã¹ãããã¹ããµãŒããŒç°å¢ã ãã§ãªããŠãŒã¶ãŒãã·ã³ã«ã©ã®ããã«åœ±é¿ããããèŠãŠããã ããã°å¹žãã§ãã