diff --git a/recipes/ca-certificates/recipe.sh b/recipes/ca-certificates/recipe.sh
index dc5a06b49f955e9dd96bf66827471970aa042fd4..f4e00f7a098d011529f1ccf7268ea94e1ce46d31 100644
--- a/recipes/ca-certificates/recipe.sh
+++ b/recipes/ca-certificates/recipe.sh
@@ -1,15 +1,16 @@
 function recipe_fetch {
-    mkdir source
+    if [ ! -d source ]
+    then
+        mkdir source
+    fi
     pushd source
-        curl -o make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514
-        curl -o certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt
+        curl -o make-ca.sh --time-cond make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514
+        curl -o certdata.txt --time-cond certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt
     popd
     skip=1
 }
 
 function recipe_update {
-    curl -o make-ca.sh --time-cond make-ca.sh http://anduin.linuxfromscratch.org/BLFS/other/make-ca.sh-20170514
-    curl -o certdata.txt --time-cond certdata.txt http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt
     skip=1
 }
 
diff --git a/recipes/cargo/recipe.sh b/recipes/cargo/recipe.sh
index a6faa2c7920829db53d4e81f9bdec3e53e550d07..835267931c250bd7a8bf68930700aa7b947a62f2 100644
--- a/recipes/cargo/recipe.sh
+++ b/recipes/cargo/recipe.sh
@@ -13,9 +13,9 @@ function recipe_build {
     mkdir openssl-prefix
 
     pushd openssl-redox
-        ./Configure no-shared no-dgram redox-x86_64 --prefix="$PWD/../openssl-prefix"
+        ./Configure no-shared no-dgram redox-x86_64 --prefix="/"
 	make -j"$(nproc)"
-	make install
+	make DESTDIR="$PWD/../openssl-prefix" install
     popd
 
     export OPENSSL_DIR=$PWD/openssl-prefix
diff --git a/recipes/curl/recipe.sh b/recipes/curl/recipe.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ad96990c21d13e1636edaca06a6a4452325e81e6
--- /dev/null
+++ b/recipes/curl/recipe.sh
@@ -0,0 +1,55 @@
+GIT=https://github.com/ids1024/curl.git
+BRANCH=redox
+
+HOST=x86_64-elf-redox
+
+function recipe_version {
+    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+    skip=1
+}
+
+function recipe_update {
+    echo "skipping update"
+    skip=1
+}
+
+function recipe_build {
+    if [ -d openssl-redox ]
+    then
+        git -C openssl-redox pull
+    else
+        git clone https://github.com/ids1024/openssl.git -b redox --depth 1 openssl-redox
+    fi
+
+    rm -rf openssl-prefix
+    mkdir openssl-prefix
+
+    pushd openssl-redox
+        ./Configure no-shared no-dgram redox-x86_64 --prefix="/"
+	make -j"$(nproc)"
+	make DESTDIR="$PWD/../openssl-prefix" install
+    popd
+
+    rm -rf openssl-prefix/lib/pkgconfig # pkg-config returns paths based on / prefix, breaking cross compile
+
+    ./configure --prefix=/ --host=${HOST} --disable-tftp --disable-ftp --disable-ntlm-wb --with-ssl="$PWD/openssl-prefix" --with-ca-path=/ssl/certs
+    make
+
+    skip=1
+}
+
+function recipe_test {
+    echo "skipping test"
+    skip=1
+}
+
+function recipe_clean {
+    make clean
+    skip=1
+}
+
+function recipe_stage {
+    mkdir "$1/bin"
+    cp src/curl "$1/bin"
+    skip=1
+}