curl - ca-bundle.crt [external?]

eYo

Neuer User
Mitglied seit
5 Jan 2008
Beiträge
165
Punkte für Reaktionen
0
Punkte
0
Hi IPPFler,

ich bin gerade dabei, eine ca-bundle.crt-Datei mit ins curl-binary zu compilen. Leider fehlt mir da aber das nötige Hintergrundwissen mit den Make-Utils, etc.
Mein Vorhaben:

Ich möchte gerne curl compilen und auf Wunsch (wie z.B. die Option -> "static binary") ein aktuelles ca-bundle.crt mit ins Image ODER z.B. auf einen externen Datenträger (USB, 73XX "NAS", usw.) packen.
Ich würde dann z.B. via external diese Datei gerne austauschen, z.B. weil ich derzeit mit CURL meine Zertifikate nicht validieren kann (nur mit dem latest Mozilla ca-bundle.crt was offensichtlich nicht von curl in Anspruch genommen wird).

Hier mein bisheriger Ansatz:
Code:
diff --git make/curl/Config.in make/curl/Config.in
index 046a537..9f9299b 100644
--- make/curl/Config.in
+++ make/curl/Config.in
@@ -9,7 +9,13 @@ config FREETZ_PACKAGE_CURL
                kerberos, HTTP form based upload, proxies, cookies, user+password
                authentication, file transfer resume, http proxy tunneling and a
                busload of other useful tricks.
-
+config FREETZ_PACKAGE_CURL_CABUNDLE
+    bool "use ca-bundle.crt"
+    default n
+    depends on FREETZ_PACKAGE_CURL
+    help
+        creates curl-ca-bundle.crt in /usr/share/curl
+        Using fresh data of http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt
 config FREETZ_PACKAGE_CURL_STATIC
        bool "create statically linked binary"
        depends on FREETZ_PACKAGE_CURL
diff --git make/curl/curl.mk make/curl/curl.mk
index b50d932..d704ddb 100644
--- make/curl/curl.mk
+++ make/curl/curl.mk
@@ -61,7 +61,7 @@ $(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_LIB_libcurl_WITH_CYASSL),--with-cyassl
 $(PKG)_CONFIGURE_OPTIONS += --without-gnutls
 $(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_LIB_libcurl_WITH_OPENSSL),--with-ssl="$(TARGET_TOOLCHAIN_STAGING_DIR)/usr",--without-ssl)
 $(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_LIB_libcurl_WITH_POLARSSL),--with-polarssl="$(TARGET_TOOLCHAIN_STAGING_DIR)/usr",--without-polarssl)
-$(PKG)_CONFIGURE_OPTIONS += --without-ca-bundle
+$(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_PACKAGE_CURL_CABUNDLE),--with-ca-bundle="$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/share/curl/curl-ca-bundle.crt",--without-ca-bundle)
 $(PKG)_CONFIGURE_OPTIONS += --without-libidn
 $(PKG)_CONFIGURE_OPTIONS += $(if $(FREETZ_LIB_libcurl_WITH_ZLIB),--with-zlib="$(TARGET_TOOLCHAIN_STAGING_DIR)/usr",--without-zlib)

@@ -84,6 +84,7 @@ $($(PKG)_LIB_STAGING_BINARY): $($(PKG)_LIB_BINARY)

 $($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
        $(INSTALL_BINARY_STRIP)
+       $(if $(FREETZ_PACKAGE_CURL_CABUNDLE),"mkdir -p $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/share/curl")

 $($(PKG)_LIB_TARGET_BINARY): $($(PKG)_LIB_STAGING_BINARY)
        $(INSTALL_LIBRARY_STRIP)
@@ -98,7 +99,8 @@ $(pkg)-clean:
                $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/libcurl* \
                $(TARGET_TOOLCHAIN_STAGING_DIR)/lib/pkgconfig/libcurl.pc \
                $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/include/curl \
-               $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/bin/curl*
+               $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/bin/curl* \
+               $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/share/curl/*

 $(pkg)-uninstall:
        $(RM) $(CURL_TARGET_BINARY) $(CURL_TARGET_LIBDIR)/libcurl*.so*
diff --git make/curl/external.files make/curl/external.files
index 7fabc2c..934138a 100644
--- make/curl/external.files
+++ make/curl/external.files
@@ -1,3 +1,4 @@
 [ "$EXTERNAL_FREETZ_PACKAGE_CURL" == "y" ] && EXTERNAL_FILES+=" /usr/bin/curl"
+[ "$EXTERNAL_FREETZ_PACKAGE_CURL_CABUNDLE" == "y" ] && EXTERNAL_FILES+=" /usr/share/curl/curl-ca-bundle.crt"

 [ "$EXTERNAL_FREETZ_LIB_libcurl" == "y" ] && EXTERNAL_FILES+=" $FREETZ_LIBRARY_DIR/libcurl.so.4.2.0"
diff --git make/curl/external.in make/curl/external.in
index 3f3bed0..2bb5ad8 100644
--- make/curl/external.in
+++ make/curl/external.in
@@ -5,6 +5,7 @@ config EXTERNAL_FREETZ_PACKAGE_CURL
        help
                externals these file(s):
                 /usr/bin/curl
+                /usr/share/curl/curl-ca-bundle.crt

                Note:
                Curl uses also libcrypto library.

Die curl-ca-bundle.crt müsste z.B. mit einem Perl-Skript von der "http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1" gebaut werden, alternativ kann man ja auch vielleicht anders an eine aktive ca-bundle.crt-Datei kommen. Wie genau das ca-bundle.crt gebaut wird, steht hier geschrieben:
http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/cacerts.html

Hat vielleicht jemand lust das weiter zu führen? Würde mir dann gern das Ergebnis anschauen um dann in Zukunft selbst sowas fertig zu kriegen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.