{"id":1549,"date":"2020-07-09T00:05:58","date_gmt":"2020-07-08T15:05:58","guid":{"rendered":"https:\/\/oboki.net\/?p=1549"},"modified":"2021-01-25T22:40:19","modified_gmt":"2021-01-25T13:40:19","slug":"how-to-use-trusted-self-signed-certificate-for-local-secure-env","status":"publish","type":"post","link":"https:\/\/oboki.net\/workspace\/system\/linux\/how-to-use-trusted-self-signed-certificate-for-local-secure-env\/","title":{"rendered":"[network] \ud3d0\uc1c4\ub9dd \ub85c\uceec \ud658\uacbd\uc5d0\uc11c CA-signed SSL \uc778\uc99d\uc11c \uc774\uc6a9\ud558\uae30 (&#8220;trusted&#8221; self-signed certificate)"},"content":{"rendered":"<p>\ub85c\uceec \uac1c\ubc1c \ud658\uacbd\uc744 production \ud658\uacbd\uacfc \ub9de\ucdb0\uc11c secure \ud1b5\uc2e0\uc73c\ub85c \uc138\ud305\uc744 \ud574\ub193\uc73c\uba74<del>, https \ub97c \ube44\ub86f\ud574\uc11c,<\/del> \uae30\ubcf8\uc801\uc73c\ub85c\ub294 \uc5ec\ub7ec \uacbd\uace0 \ubb38\uad6c\ub4e4\uacfc \ub9c8\uc8fc\ud560 \uc218\ubc16\uc5d0 \uc5c6\ub2e4. \uc6f9\ube0c\ub77c\uc6b0\uc800\ub77c\uba74 \uba87\ubc88\uc758 \ud074\ub9ad\uc73c\ub85c \ub118\uc5b4\uac08 \uc218\ub3c4 \uc788\uaca0\uc9c0\ub9cc \uc5ec\ub7ec \uc11c\ubc84 \ubaa8\ub4c8\uc774 \uc788\ub2e4\uba74 \uc11c\ub85c\uac04\uc758 \ud1b5\uc2e0\uc5d0\uc11c \uac80\uc99d \ub2e8\uacc4\ub97c \uc2a4\ud0b5\ud558\ub294 \ucf54\ub4dc\ub97c \uc2ec\uc5b4\uc57c\ud558\ub294 \ubc88\uac70\ub85c\uc6b4 \uc791\uc5c5\uc774 \ub9ce\uc774 \ubc1c\uc0dd\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n<p>\uc774\ub7f0 \uadc0\ucc2e\uc740 \uc77c\ub4e4\uc744 \uc904\uc774\uace0 \uc2dc\uac01\uc801\uc778 \ub9cc\uc871\uac10\uc744 \uc704\ud574\uc11c\ub294 \ub85c\uceec \ud658\uacbd\uc744 &quot;\uc2e0\ub8b0\ubc1b\ub294&quot; \ud658\uacbd\uc73c\ub85c \ub9cc\ub4e4\uc5b4\ubc84\ub9ac\uba74 \ub418\ub294\ub370 \uc2a4\uc2a4\ub85c root CA \ub97c \ubc1c\uae09\ud574\uc11c \uc778\uc99d\ud574\ubc84\ub9ac\uba74 \ub41c\ub2e4.<\/p>\n<h2>root CA<\/h2>\n<blockquote>\n<p>root CA; root Certificate Authorization<\/p>\n<\/blockquote>\n<p>\uc778\uc99d\uc11c\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc6f9\uc0ac\uc774\ud2b8\uc640 \uac19\uc740 \uc6f9\uc11c\ube44\uc2a4\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uacf5\uac1c\ud0a4\uac00 \uc704\ubcc0\uc870\ub418\uc9c0 \uc54a\uc558\ub2e4\ub294 \uac83\uc744 \uc778\uc99d \uae30\uad00(CA)\uc774 \uc99d\uba85\ud574\uc8fc\ub294 \ubb38\uc11c\uc774\ub2e4. \uc774 \uc778\uc99d \ub2e8\uacc4\uc758 \uac00\uc7a5 \uaf2d\ub300\uae30\uc5d0 \uc788\ub294 \uacf3\uc774 root CA\uc778\ub370 \uc778\uc99d \ub2e8\uacc4 \ucd5c\uc0c1\uc704\uc5d0 \uc704\uce58\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc774 \uae30\uad00\ub4e4\uc740 \ub2e4\ub978 \uae30\uad00\uc5d0\uc11c \uc778\uc99d\ud574\uc8fc\uc9c0\ub294 \uc54a\uc9c0\ub9cc \uc2e0\ub8b0\ud560 \uc218 \uc788\ub294 \uae30\uad00\uc774\ub77c &quot;\ubbff\uace0&quot; \uc4f4\ub2e4\uace0 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<p><code>Verisign<\/code>, <code>Comodo<\/code>, <code>Thawte<\/code> \uac19\uc740 \ud68c\uc0ac\ub4e4\uc774 \uc778\ud130\ub137\uc5d0\uc11c \ubc14\ub85c \uc774\ub7f0 root CA \uc5ed\ud560\uc744 \ud558\uace0 \uc788\ub294\ub370 \uc774\ub7f0 \uc720\uba85\ud55c \ud68c\uc0ac\uc758 \uc778\uc99d\uc11c\ub4e4\uc740 \ucd94\uac00\uc801\uc73c\ub85c \ub2e4\ub978 \uae30\uad00\uc5d0\uc11c \uc778\uc99d\ud574\uc8fc\uc9c0\ub294 \uc54a\uc9c0\ub9cc \uc6f9\ube0c\ub77c\uc6b0\uc800\ub098 OS\uc5d0 \uae30\ubcf8\uc801\uc73c\ub85c \uc124\uce58\ub418\uc5b4 \uc788\uae30\ub54c\ubb38\uc5d0 \uc62c\ubc14\ub978 \uc778\uc99d\uc11c\ub85c \ucde8\uae09\ub418\uc5b4\uc9c4\ub2e4. \uc0ac\uc2e4 \uc774\ub7f0 root CA \uc778\uc99d\uc11c\ub4e4\uc740 \ub0b4 \ub85c\uceec \ucef4\ud4e8\ud130\uac00 \uc778\uc99d\ud558\uace0 \uc788\ub294 \uc148\uc774\ub2e4.<\/p>\n<p>\uacb0\uad6d \uc774\ub7f0 root CA \uc778\uc99d\uc11c\ub4e4\uc740 root CA \uae30\uad00\uc5d0\uc11c \uc140\ud504 \uc11c\uba85\ud55c \uc778\uc99d\uc11c\uc774\uba74\uc11c \uac15\uc81c\ub85c \uc6f9\ube0c\ub77c\uc6b0\uc800\ub098 OS \ubca4\ub354\ub4e4\uc774 \uac15\uc81c\ub85c \uc124\uce58\ud574\ub1a8\uae30\ub54c\ubb38\uc5d0 \uc2e0\ub8b0\ud560 \uc218 \uc788\ub294 \uac83\uc778\ub370 \uc774 \ub290\ub08c \uadf8\ub300\ub85c, \ub0b4 \ub85c\uceec \uc11c\ubc84\ub97c root CA\ub85c \ub9cc\ub4e4\uace0 \ub0b4 \ub85c\uceec \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \ucd94\uac00\ub85c \uc124\uce58\ub9cc \ud574\uc8fc\uba74 \ub85c\uceec \uc11c\ubc84\ub97c root CA \uc5d0\uc11c \uc778\uc99d\ubc1b\uc740 <code>&quot;trusted&quot;<\/code> site \ub85c \ub454\uac11\uc2dc\ud0ac \uc218 \uc788\ub2e4.<\/p>\n<h2>self-signed root CA \uc778\uc99d\uc11c \ubc1c\uae09<\/h2>\n<p>\uba3c\uc800 \ub2e4\uc74c\uacfc \uac19\uc774 private key \ub97c \ub9cc\ub4e4\uc5b4\uc57c\ud558\ub294\ub370 <\/p>\n<pre><code class=\"language-bash\">openssl genrsa -des3 -out localCA.key 2048<\/code><\/pre>\n<p><code>pass phrase<\/code> \ub97c \uc785\ub825\ud558\uc9c0 \uc54a\uc73c\uba74 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\ub2c8 \uaf2d \uc785\ub825\ud558\uace0 \uc798 \uae30\uc5b5\ud574\ub450\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<pre><code class=\"language-bash\">Generating RSA private key, 2048 bit long modulus\n.........................+++\n..+++\ne is 65537 (0x10001)\nEnter pass phrase for localCA.key: # \uc544\ubb34\uac83\ub3c4 \uc785\ub825\ud558\uc9c0 \uc54a\uc73c\uba74 \uc544\ub798\uc640 \uac19\uc774 \uc5d0\ub7ec \ubc1c\uc0dd\n139743430993808:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:831:You must type in 4 to 1023 characters\nEnter pass phrase for localCA.key:\nVerifying - Enter pass phrase for localCA.key:<\/code><\/pre>\n<p><code>localCA.key<\/code> \ud30c\uc77c\uc774 \uc0dd\uc131\ub418\uc5c8\uc73c\uba74 \uc774 private key \ub97c \uc774\uc6a9\ud574\uc11c root CA \uc778\uc99d\uc11c\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ub9cc\ub4e4\uc5b4\uc900\ub2e4.<\/p>\n<pre><code class=\"language-bash\">openssl req -x509 -new -nodes -key localCA.key -sha256 -days 365 -out localCA.pem<\/code><\/pre>\n<pre><code class=\"language-bash\">Enter pass phrase for localCA.key:\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter &#039;.&#039;, the field will be left blank.\n-----\nCountry Name (2 letter code) [XX]:KR\nState or Province Name (full name) []:Seoul\nLocality Name (eg, city) [Default City]:DDM\nOrganization Name (eg, company) [Default Company Ltd]:Virtual Machines. OBOKI. net.    \nOrganizational Unit Name (eg, section) []:\nCommon Name (eg, your name or your server&#039;s hostname) []:centos.vm.oboki.net\nEmail Address []:papa@oboki.net<\/code><\/pre>\n<p><code>localCA.pem<\/code> \ud30c\uc77c\uc774 \uc0dd\uc131\ub418\uc5c8\uc73c\uba74 root CA \uc778\uc99d\uc11c \ubc1c\uae09 \ub05d<\/p>\n<h2>OS \ubcc4 root CA \ub4f1\ub85d \ubc29\ubc95<\/h2>\n<h3>Windows \ud074\ub77c\uc774\uc5b8\ud2b8<\/h3>\n<p>\uba3c\uc800 \uc544\ub798\uc640 \uac19\uc774 *.crt \ud30c\uc77c\ub85c \ubcc0\uacbd\ud574\uc11c windows \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \ud30c\uc77c\uc744 \uc62e\uaca8\uc900 \ub4a4<\/p>\n<pre><code class=\"language-bash\">openssl x509 -outform der -in localCA.pem -out localCA.crt<\/code><\/pre>\n<p>\ud574\ub2f9 \ud30c\uc77c\uc744 \ub354\ube14\ud074\ub9ad\ud574\uc11c <code>\uc778\uc99d\uc11c \uc124\uce58<\/code> \ubc84\ud2bc\uc744 \ub20c\ub7ec \uac04\ub2e8\ud788 \uc124\uce58\ud558\uac70\ub098<\/p>\n<p><img decoding=\"async\" src=\"\/workspace\/wp-content\/uploads\/2020\/07\/crt_install.png#mdimgcenter\" alt=\"\" \/><\/p>\n<p>\uad00\ub9ac\uc790 \uad8c\ud55c\uc73c\ub85c <code>cmd<\/code>\ub97c \uc5f4\uc5b4 <code>certmgr<\/code> \ub97c \uc785\ub825\ud558\uba74 \uc778\uc99d\uc11c \uad00\ub9ac\uc790\uac00 \uc2e4\ud589\ub418\ub294\ub370 \uc544\ub798\uc640 \uac19\uc774 <code>\uc2e0\ub8b0\ud560 \uc218 \uc788\ub294 \ub8e8\ud2b8 \uc778\uc99d \uae30\uad00<\/code>\uc5d0 CA \uc778\uc99d\uc11c\ub97c \ucd94\uac00\ud574\uc8fc\uba74 \ub41c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"\/workspace\/wp-content\/uploads\/2020\/07\/\/certmgr_import.png#mdimgcenter\" alt=\"\" \/><\/p>\n<h3>Linux<\/h3>\n<p>CentOS7 \uae30\uc900 <code>\/etc\/pki\/ca-trust\/source\/anchors\/<\/code> \uc704\uce58\uc5d0 \uc55e\uc11c \uc0dd\uc131\ud55c root CA \uc778\uc99d\uc11c\ub97c \ubcf5\uc0ac\ud574\ub450\uace0 <code>update-ca-trust<\/code> \uba85\ub839\ub9cc\uc73c\ub85c \uac04\ub2e8\ud558\uac8c \ub4f1\ub85d\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-bash\">cp localCA.pem \/etc\/pki\/ca-trust\/source\/anchors\/.\nupdate-ca-trust<\/code><\/pre>\n<h3>Mac OS X<\/h3>\n<p>\ub9e5\uc5d0\uc11c\ub3c4 root CA \uc778\uc99d\uc11c\ub97c \uac00\uc838\uc640\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 CLI \ub85c \ub4f1\ub85d\ud560 \uc218\ub3c4 \uc788\uace0<\/p>\n<pre><code class=\"language-bash\">sudo security add-trusted-cert -d -r trustRoot -k &quot;\/Library\/Keychains\/System.keychain&quot; localCA.pem<\/code><\/pre>\n<p><code>Keychain<\/code> \uc571\uc744 \ud1b5\ud574 \ud654\uba74\uc73c\ub85c \ub4f1\ub85d\ud560 \uc218\ub3c4 \uc788\ub2e4. <del>Mac\uc774 \ud68c\uc0ac\uc5d0\ub9cc \uc788\uc5b4\uc11c \ucea1\ucc98\ub97c \ub4f1\ub85d\ud558\uc9c0\ub294 \ubabb\ud568 \u315c\u315c<\/del><\/p>\n<h2>CA-signed \uc778\uc99d\uc11c \uc0dd\uc131<\/h2>\n<p>\uc774\uc81c\ubd80\ud130\ub294 \uc0dd\uc131\ub41c root CA \uc778\uc99d\uc11c\ub97c \uc774\uc6a9\ud574\uc11c \ud544\uc694\ud55c \ud638\uc2a4\ud2b8\ub4e4\uc744 \ub0b4\ub9d8\ub300\ub85c \ubb34\ucc28\ubcc4\uc801\uc73c\ub85c \uc778\uc99d\ud574\uc904 \uc218\uac00 \uc788\ub294\ub370 \uc778\uc99d\ud558\uace0\uc790 \ud558\ub294 \ud638\uc2a4\ud2b8\uc5d0 \ub300\ud574 \ub2e4\uc74c\uacfc \uac19\uc774 private key \ub97c \uc0dd\uc131\ud558\uace0<\/p>\n<pre><code class=\"language-bash\">openssl genrsa -out airflow.centos.vm.oboki.net.key 2048<\/code><\/pre>\n<pre><code class=\"language-bash\">Generating RSA private key, 2048 bit long modulus\n.........................+++\n..............+++\ne is 65537 (0x10001)<\/code><\/pre>\n<p>CSR\uc744 \uc0dd\uc131\ud558\uace0<\/p>\n<pre><code class=\"language-bash\">openssl req -new -key airflow.centos.vm.oboki.net.key -out airflow.centos.vm.oboki.net.csr<\/code><\/pre>\n<pre><code class=\"language-bash\">You are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter &#039;.&#039;, the field will be left blank.\n-----\nCountry Name (2 letter code) [XX]:KR\nState or Province Name (full name) []:Seoul\nLocality Name (eg, city) [Default City]:DDM\nOrganization Name (eg, company) [Default Company Ltd]:Airflow\nOrganizational Unit Name (eg, section) []:\nCommon Name (eg, your name or your server&#039;s hostname) []:airflow.centos.vm.oboki.net\nEmail Address []:papa@oboki.net\n\nPlease enter the following &#039;extra&#039; attributes\nto be sent with your certificate request\nA challenge password []:\nAn optional company name []:<\/code><\/pre>\n<p>\ub2e4\uc74c\uacfc \uac19\uc740 \uc124\uc815 \ud30c\uc77c\uc744 \uc791\uc131\ud55c \ub4a4<\/p>\n<p><code>vim airflow.centos.vm.oboki.net.ext<\/code><\/p>\n<pre><code class=\"language-conf\">authorityKeyIdentifier=keyid,issuer\nbasicConstraints=CA:FALSE\nkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\nsubjectAltName = @alt_names\n\n[alt_names]\nDNS.1 = airflow.centos.vm.oboki.net<\/code><\/pre>\n<p>\ub2e4\uc74c \uba85\ub839\uc744 \uc218\ud589\ud574\uc11c pass phrase \ub97c \uc785\ub825\ud574\uc8fc\uba74 <code>airflow.centos.vm.oboki.net<\/code> \ud638\uc2a4\ud2b8\ub97c <code>centos.vm.oboki.net<\/code> CA \uac00 \uc778\uc99d\ud558\ub294 \uc778\uc99d\uc11c\ub97c \ubc1c\uae09\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-bash\">openssl x509 -req -in airflow.centos.vm.oboki.net.csr -CA localCA.pem -CAkey localCA.key -CAcreateserial \\\n-out airflow.centos.vm.oboki.net.crt -days 365 -sha256 -extfile airflow.centos.vm.oboki.net.ext<\/code><\/pre>\n<pre><code class=\"language-bash\">Signature ok\nsubject=\/C=KR\/ST=Seoul\/L=DDM\/O=Airflow\/CN=airflow.centos.vm.oboki.net\/emailAddress=papa@oboki.net\nGetting CA Private Key\nEnter pass phrase for localCA.key:<\/code><\/pre>\n<p>\ubc1c\uae09\ub41c \uc778\uc99d\uc11c\ub97c \uc6f9\uc11c\ubc84\uc5d0 \ub4f1\ub85d\ud574\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \uc811\uadfc\ud574\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcf4\uc548 \uacbd\uace0 \uc5c6\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc751\ub2f5\ud574\uc8fc\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"\/workspace\/wp-content\/uploads\/2020\/07\/airflow_centos_vm_cert_ok.png#mdimgcenter\" alt=\"\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/workspace\/wp-content\/uploads\/2020\/07\/airflow_centos_vm_cert_ok_path.png#mdimgcenter\" alt=\"\" \/><\/p>\n<p>\uac1c\uc778\uc801\uc73c\ub85c \uc6f9\ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c <code>\uc8fc\uc758 \uc694\ud568<\/code>\uc774 \uc544\ub2cc \ucd08\ub85d\uc0c9 \uc790\ubb3c\uc1e0\uac00 \ub728\ub294 \uac83\uc5d0\uc11c \uc624\ub294 \ub9cc\uc871\uac10\uc774 \uc815\ub9d0 \ud070 \uac83 \uac19\ub2e4.<\/p>\n<p>\uc11c\ubc84\ub4e4 \uac04\uc758 \ud1b5\uc2e0\uc5d0\uc11c\ub3c4 \uc6d0\ub798\ub294 \ubcf4\uc548 \uacbd\uace0\uac00 \ubc1c\uc0dd\ud558\ub294\ub370<\/p>\n<pre><code class=\"language-bash\"># curl -I https:\/\/airflow.centos.vm.oboki.net\ncurl: (60) Peer&#039;s Certificate issuer is not recognized.\nMore details here: http:\/\/curl.haxx.se\/docs\/sslcerts.html\n\ncurl performs SSL certificate verification by default, using a &quot;bundle&quot;\n of Certificate Authority (CA) public keys (CA certs). If the default\n bundle file isn&#039;t adequate, you can specify an alternate file\n using the --cacert option.\nIf this HTTPS server uses a certificate signed by a CA represented in\n the bundle, the certificate verification probably failed due to a\n problem with the certificate (it might be expired, or the name might\n not match the domain name in the URL).\nIf you&#039;d like to turn off curl&#039;s verification of the certificate, use\n the -k (or --insecure) option.<\/code><\/pre>\n<p>\uc815\uc0c1\uc801\uc73c\ub85c \uc751\ub2f5\uc774 \uc624\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-bash\"># curl -I https:\/\/airflow.centos.vm.oboki.net\nHTTP\/1.1 302 FOUND\nServer: nginx\/1.19.1\nDate: Sun, 26 Jul 2020 14:23:18 GMT\nContent-Type: text\/html; charset=utf-8\nContent-Length: 217\nConnection: keep-alive\nLocation: http:\/\/airflow.centos.vm.oboki.net\/home\nVary: Cookie\nSet-Cookie: session=eyJfcGVybWFuZW50Ijp0cnVlfQ.Xx2R1g.Se8JyvqlgR9nIltqP8Xnc7Sp3Sc; Expires=Tue, 25-Aug-2020 14:23:18 GMT; HttpOnly; Path=\/<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ub85c\uceec \uac1c\ubc1c \ud658\uacbd\uc744 production \ud658\uacbd\uacfc \ub9de\ucdb0\uc11c secure \ud1b5\uc2e0\uc73c\ub85c \uc138\ud305\uc744 \ud574\ub193\uc73c\uba74, https \ub97c \ube44\ub86f\ud574\uc11c, \uae30\ubcf8\uc801\uc73c\ub85c\ub294 \uc5ec\ub7ec \uacbd\uace0 \ubb38\uad6c\ub4e4\uacfc \ub9c8\uc8fc\ud560 \uc218\ubc16\uc5d0 \uc5c6\ub2e4. \uc6f9\ube0c\ub77c\uc6b0\uc800\ub77c\uba74 \uba87\ubc88\uc758 \ud074\ub9ad\uc73c\ub85c \ub118\uc5b4\uac08 \uc218\ub3c4 \uc788\uaca0\uc9c0\ub9cc \uc5ec\ub7ec \uc11c\ubc84 \ubaa8\ub4c8\uc774 \uc788\ub2e4\uba74 \uc11c\ub85c\uac04\uc758 \ud1b5\uc2e0\uc5d0\uc11c \uac80\uc99d \ub2e8\uacc4\ub97c \uc2a4\ud0b5\ud558\ub294 \ucf54\ub4dc\ub97c \uc2ec\uc5b4\uc57c\ud558\ub294 \ubc88\uac70\ub85c\uc6b4 \uc791\uc5c5\uc774 \ub9ce\uc774 \ubc1c\uc0dd\ud560 \uc218\ub3c4 \uc788\ub2e4. \uc774\ub7f0 \uadc0\ucc2e\uc740 \uc77c\ub4e4\uc744 \uc904\uc774\uace0 \uc2dc\uac01\uc801\uc778 \ub9cc\uc871\uac10\uc744 \uc704\ud574\uc11c\ub294 \ub85c\uceec \ud658\uacbd\uc744 &quot;\uc2e0\ub8b0\ubc1b\ub294&quot; \ud658\uacbd\uc73c\ub85c \ub9cc\ub4e4\uc5b4\ubc84\ub9ac\uba74 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,19,21],"tags":[],"class_list":["post-1549","post","type-post","status-publish","format-standard","hentry","category-linux","category-network","category-security"],"_links":{"self":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/1549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/comments?post=1549"}],"version-history":[{"count":0,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/1549\/revisions"}],"wp:attachment":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/media?parent=1549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/categories?post=1549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/tags?post=1549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}