diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py
index e280aa67e40a4b..1ed5047200419d 100644
--- a/homeassistant/components/notify/html5.py
+++ b/homeassistant/components/notify/html5.py
@@ -26,7 +26,7 @@
from homeassistant.helpers import config_validation as cv
from homeassistant.util import ensure_unique_string
-REQUIREMENTS = ['pywebpush==1.6.0', 'PyJWT==1.6.0']
+REQUIREMENTS = ['pywebpush==1.6.0']
DEPENDENCIES = ['frontend']
diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt
index 3aa1e3643c6fa7..26628d7fe6255c 100644
--- a/homeassistant/package_constraints.txt
+++ b/homeassistant/package_constraints.txt
@@ -5,6 +5,7 @@ attrs==18.1.0
certifi>=2018.04.16
jinja2>=2.10
PyJWT==1.6.4
+cryptography==2.3.1
pip>=8.0.3
pytz>=2018.04
pyyaml>=3.13,<4
diff --git a/requirements_all.txt b/requirements_all.txt
index 3f50e50d19afc7..5289db61f6282c 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -6,6 +6,7 @@ attrs==18.1.0
certifi>=2018.04.16
jinja2>=2.10
PyJWT==1.6.4
+cryptography==2.3.1
pip>=8.0.3
pytz>=2018.04
pyyaml>=3.13,<4
@@ -39,9 +40,6 @@ Mastodon.py==1.3.1
# homeassistant.components.isy994
PyISY==1.1.0
-# homeassistant.components.notify.html5
-PyJWT==1.6.0
-
# homeassistant.components.sensor.mvglive
PyMVGLive==1.1.4
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index ffc55c23210236..4115fcfcb3f030 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -21,9 +21,6 @@ requests_mock==1.5.2
# homeassistant.components.homekit
HAP-python==2.2.2
-# homeassistant.components.notify.html5
-PyJWT==1.6.0
-
# homeassistant.components.sensor.rmvtransport
PyRMVtransport==0.0.7
diff --git a/setup.py b/setup.py
index bd1e70aa8ae6f1..7484dc286e62ee 100755
--- a/setup.py
+++ b/setup.py
@@ -39,6 +39,8 @@
'certifi>=2018.04.16',
'jinja2>=2.10',
'PyJWT==1.6.4',
+ # PyJWT has loose dependency. We want the latest one.
+ 'cryptography==2.3.1',
'pip>=8.0.3',
'pytz>=2018.04',
'pyyaml>=3.13,<4',