diff --git a/app/owlca/templates/owlca/cert_item.html b/app/owlca/templates/owlca/cert_item.html
index 1e4154d54428bf6f546f7d9238cff107d09552f5..3d74239a53faac8ec07a793a9739bea58542f51a 100644
--- a/app/owlca/templates/owlca/cert_item.html
+++ b/app/owlca/templates/owlca/cert_item.html
@@ -99,10 +99,17 @@
 
       {% if not csr %}
       <div>
+        {% if pickup %}
+        <a href="{% url 'cert-pickup-download' cert.request.pickup_code cert.pk %}">
+          <i class="fas fa-download"></i>
+              Download cert.pem
+        </a>
+        {% else %}
         <a href="{% url 'cert-download' cert.pk %}">
           <i class="fas fa-download"></i>
-          {{ request.scheme }}://{{ request.get_host}}{% url 'cert-download' cert.pk %}
+              {{ request.scheme }}://{{ request.get_host}}{% url 'cert-download' cert.pk %}
         </a>
+        {% endif %}
       </div>
       {% endif  %}
     </div>
diff --git a/app/owlca/templates/owlca/certificate_pickup.html b/app/owlca/templates/owlca/certificate_pickup.html
index 0c31aca2f3b32f1ccf1d707c409925f0288dbebf..87bbf9eee86fd996065cf655b5f49568aee0586f 100644
--- a/app/owlca/templates/owlca/certificate_pickup.html
+++ b/app/owlca/templates/owlca/certificate_pickup.html
@@ -36,7 +36,7 @@
 {% if certificatesigningrequest.verification == 10 %}
 <ul class="list-unstyled">
     {% for cert in certificatesigningrequest.certificates.all %}
-      {% include 'owlca/cert_item.html' %}
+      {% include 'owlca/cert_item.html' with pickup=True %}
     {% endfor %}
 </ul>
 {% elif certificatesigningrequest.verification == 0 %}
diff --git a/app/owlca/urls.py b/app/owlca/urls.py
index ab35fef28b1f7716fc2d9d1f6d20553972dc529f..ece4fc454c2f74243d0df61f251ab32aa68cd008 100644
--- a/app/owlca/urls.py
+++ b/app/owlca/urls.py
@@ -32,7 +32,7 @@ urlpatterns = [
 
     path("cert/<str:pickup_code>/", views.CertPickupView.as_view(),
          name="cert-pickup"),
-    path("cert/<str:pickup_code>/<str:serial_number>/cert.pem",
+    path("cert/<str:pickup_code>/<str:cert_pk>/cert.pem",
          views.cert_pickup_download,
          name="cert-pickup-download"),
 ]
diff --git a/app/owlca/views.py b/app/owlca/views.py
index 12dadcbab1c3318275c4ddd53b6419a324172fb4..6cbf62486e2db8e1f1e3c0c74dda38ce54ff8b0f 100644
--- a/app/owlca/views.py
+++ b/app/owlca/views.py
@@ -89,12 +89,11 @@ class CertPickupView(DetailView):
     template_name = "owlca/certificate_pickup.html"
     model = models.CertificateSigningRequest
 
-def cert_pickup_download(request, pickup_code, serial_number):
+def cert_pickup_download(request, pickup_code, cert_pk):
     csr = get_object_or_404(models.CertificateSigningRequest,
                             pickup_code=pickup_code)
     try:
-        bin_serial = bytes.fromhex(serial_number)
-        cert = csr.certificates.get(serial_number=bin_serial)
+        cert = csr.certificates.get(pk=cert_pk)
     except (ValueError, models.Certificate.DoesNotExist) as e:
         raise Http404()