diff --git a/xos/services/vpn/admin.py b/xos/services/vpn/admin.py
index 0e2362f..5ca5b69 100644
--- a/xos/services/vpn/admin.py
+++ b/xos/services/vpn/admin.py
@@ -6,7 +6,7 @@
 from django import forms
 from django.contrib import admin
 from services.vpn.models import VPN_KIND, VPNService, VPNTenant
-
+from subprocess import Popen, PIPE
 
 class VPNServiceAdmin(ReadOnlyAwareAdmin):
     """Defines the admin for the VPNService."""
@@ -144,8 +144,7 @@
             # If anything deleated was a TenantPrivilege then revoke the certificate
             if type(obj) is TenantPrivilege:
                 certificate = self.certificate_name(obj)
-                # revoke the cert
-                pass
+                Popen("/opt/openvpn/easyrsa3/easyrsa --batch revoke " + certificate, shell=True, stdout=PIPE).communicate()
             # TODO(jermowery): determine if this is necessary.
             # if type(obj) is VPNTenant:
                 # if the tenant was deleted revoke all certs assoicated
@@ -155,8 +154,7 @@
             # If there were any new TenantPrivlege objects then create certs
             if type(obj) is TenantPrivilege:
                 certificate = self.certificate_name(obj)
-                # create the cert
-                pass
+                Popen("/opt/openvpn/easyrsa3/easyrsa --batch build-client-full " + certificate + " nopass", shell=True, stdout=PIPE).communicate()
 
 
 # Associate the admin forms with the models.
diff --git a/xos/services/vpn/models.py b/xos/services/vpn/models.py
index 5f0a7d4..ed2b033 100644
--- a/xos/services/vpn/models.py
+++ b/xos/services/vpn/models.py
@@ -148,19 +148,23 @@
     def script_text(self, value):
         self.set_attribute("script_text", value)
 
-    def create_client_script(self):
+    def create_client_script(self, client_certificate):
         script = ""
         # write the configuration portion
         script += ("printf \"%b\" \"")
-        script += self.generate_client_conf()
+        script += self.generate_client_conf(client_certificate)
         script += ("\" > client.conf\n")
         script += ("printf \"%b\" \"")
-        script += self.generate_login()
-        script += ("\" > login.up\n")
-        script += ("printf \"%b\" \"")
         for line in self.ca_crt:
             script += (line.rstrip() + r"\n")
         script += ("\" > ca.crt\n")
+        script += ("printf \"%b\" \"")
+        for line in self.generate_client_cert(client_certificate):
+            script += (line.rstrip() + r"\n")
+        script += ("\" > " + client_certificate + ".crt\n")
+        for line in self.generate_client_key(client_certificate):
+            script += (line.rstrip() + r"\n")
+        script += ("\" > " + client_certificate + ".key\n")
         # make sure openvpn is installed
         script += ("apt-get update\n")
         script += ("apt-get install openvpn\n")
@@ -168,20 +172,24 @@
         # close the script
         return script;
 
-    def generate_login(self):
-        return str(time.time()) + "\npassword\n"
+    def generate_client_cert(self, client_certificate):
+        return open("/opt/openvpn/easyrsa3/pki/issued/" + client_certificate + ".crt").readlines()
 
-    def generate_client_conf(self):
+    def generate_client_key(self, client_certificate):
+        return open("/opt/openvpn/easyrsa3/pki/private/" + client_certificate + ".key").readlines()
+
+    def generate_client_conf(self, client_certificate):
         """str: Generates the client configuration to use to connect to this VPN server.
         """
         conf = ("client\n" +
-            "auth-user-pass login.up\n" +
             "dev tun\n" +
             "proto udp\n" +
             "remote " + str(self.nat_ip) + " " + str(self.port_number) + "\n" +
             "resolv-retry infinite\n" +
             "nobind\n" +
             "ca ca.crt\n" +
+            "cert " + client_certificate + ".crt\n" +
+            "key " + client_certificate + ".key\n" +
             "comp-lzo\n" +
             "verb 3\n")
 
